class freemarker.core.GetOptionalTemplateMethod implements freemarker.template.TemplateMethodModelEx
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: freemarker.core.GetOptionalTemplateMethod
super_class: java.lang.Object
{
static final freemarker.core.GetOptionalTemplateMethod INSTANCE;
descriptor: Lfreemarker/core/GetOptionalTemplateMethod;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final freemarker.core.GetOptionalTemplateMethod INSTANCE_CC;
descriptor: Lfreemarker/core/GetOptionalTemplateMethod;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.String OPTION_ENCODING;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "encoding"
private static final java.lang.String OPTION_PARSE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "parse"
private static final java.lang.String RESULT_INCLUDE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "include"
private static final java.lang.String RESULT_IMPORT;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "import"
private static final java.lang.String RESULT_EXISTS;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "exists"
private final java.lang.String methodName;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new freemarker.core.GetOptionalTemplateMethod
dup
1: ldc "get_optional_template"
2: invokespecial freemarker.core.GetOptionalTemplateMethod.<init>:(Ljava/lang/String;)V
putstatic freemarker.core.GetOptionalTemplateMethod.INSTANCE:Lfreemarker/core/GetOptionalTemplateMethod;
3: new freemarker.core.GetOptionalTemplateMethod
dup
4: ldc "getOptionalTemplate"
5: invokespecial freemarker.core.GetOptionalTemplateMethod.<init>:(Ljava/lang/String;)V
putstatic freemarker.core.GetOptionalTemplateMethod.INSTANCE_CC:Lfreemarker/core/GetOptionalTemplateMethod;
6: return
LocalVariableTable:
Start End Slot Name Signature
private void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.lang.StringBuilder
dup
ldc "."
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lfreemarker/core/GetOptionalTemplateMethod;
0 3 1 builtInVarName Ljava/lang/String;
MethodParameters:
Name Flags
builtInVarName
public java.lang.Object exec(java.util.List);
descriptor: (Ljava/util/List;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=12, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.util.List.size:()I
istore 2
start local 2 1: iload 2
iconst_1
if_icmplt 2
iload 2
iconst_2
if_icmple 3
2: StackMap locals: int
StackMap stack:
aload 0
getfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
iload 2
iconst_1
iconst_2
invokestatic freemarker.core._MessageUtil.newArgCntError:(Ljava/lang/String;III)Lfreemarker/template/TemplateModelException;
athrow
3: StackMap locals:
StackMap stack:
invokestatic freemarker.core.Environment.getCurrentEnvironment:()Lfreemarker/core/Environment;
astore 3
start local 3 4: aload 3
ifnonnull 6
5: new java.lang.IllegalStateException
dup
ldc "No freemarer.core.Environment is associated to the current thread."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: freemarker.core.Environment
StackMap stack:
aload 1
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast freemarker.template.TemplateModel
astore 5
start local 5 7: aload 5
instanceof freemarker.template.TemplateScalarModel
ifne 9
8: aload 0
getfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
iconst_0
aload 5
invokestatic freemarker.core._MessageUtil.newMethodArgMustBeStringException:(Ljava/lang/String;ILfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModelException;
athrow
9: StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment top freemarker.template.TemplateModel
StackMap stack:
aload 5
checkcast freemarker.template.TemplateScalarModel
aconst_null
aload 3
invokestatic freemarker.core.EvalUtil.modelToString:(Lfreemarker/template/TemplateScalarModel;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
astore 6
start local 6 10: aload 3
aload 3
invokevirtual freemarker.core.Environment.getCurrentTemplate:()Lfreemarker/template/Template;
invokevirtual freemarker.template.Template.getName:()Ljava/lang/String;
aload 6
invokevirtual freemarker.core.Environment.toFullTemplateName:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 11: goto 16
end local 4 StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment top freemarker.template.TemplateModel java.lang.String
StackMap stack: freemarker.template.MalformedTemplateNameException
12: astore 7
start local 7 13: new freemarker.core._TemplateModelException
dup
14: aload 7
ldc "Failed to convert template path to full path; see cause exception."
15: invokespecial freemarker.core._TemplateModelException.<init>:(Ljava/lang/Throwable;Ljava/lang/String;)V
athrow
end local 7 end local 6 end local 5 start local 4 16: StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment java.lang.String
StackMap stack:
iload 2
iconst_1
if_icmple 22
17: aload 1
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast freemarker.template.TemplateModel
astore 6
start local 6 18: aload 6
instanceof freemarker.template.TemplateHashModelEx
ifne 20
19: aload 0
getfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
iconst_1
aload 6
invokestatic freemarker.core._MessageUtil.newMethodArgMustBeExtendedHashException:(Ljava/lang/String;ILfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModelException;
athrow
20: StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment java.lang.String top freemarker.template.TemplateModel
StackMap stack:
aload 6
checkcast freemarker.template.TemplateHashModelEx
astore 5
end local 6 start local 5 21: goto 23
end local 5 22: StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment java.lang.String
StackMap stack:
aconst_null
astore 5
start local 5 23: StackMap locals: freemarker.template.TemplateHashModelEx
StackMap stack:
aconst_null
astore 6
start local 6 24: iconst_1
istore 7
start local 7 25: aload 5
ifnull 48
26: aload 5
invokestatic freemarker.template.utility.TemplateModelUtils.getKeyValuePairIterator:(Lfreemarker/template/TemplateHashModelEx;)Lfreemarker/template/TemplateHashModelEx2$KeyValuePairIterator;
astore 8
start local 8 27: goto 47
28: StackMap locals: java.lang.String int freemarker.template.TemplateHashModelEx2$KeyValuePairIterator
StackMap stack:
aload 8
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePairIterator.next:()Lfreemarker/template/TemplateHashModelEx2$KeyValuePair;
astore 9
start local 9 29: aload 9
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePair.getKey:()Lfreemarker/template/TemplateModel;
astore 11
start local 11 30: aload 11
instanceof freemarker.template.TemplateScalarModel
ifne 35
31: aload 0
getfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
iconst_1
iconst_2
anewarray java.lang.Object
dup
iconst_0
32: ldc "All keys in the options hash must be strings, but found "
aastore
dup
iconst_1
33: new freemarker.core._DelayedAOrAn
dup
new freemarker.core._DelayedFTLTypeDescription
dup
aload 11
invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
invokespecial freemarker.core._DelayedAOrAn.<init>:(Ljava/lang/Object;)V
aastore
34: invokestatic freemarker.core._MessageUtil.newMethodArgInvalidValueException:(Ljava/lang/String;I[Ljava/lang/Object;)Lfreemarker/template/TemplateModelException;
athrow
35: StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment java.lang.String freemarker.template.TemplateHashModelEx java.lang.String int freemarker.template.TemplateHashModelEx2$KeyValuePairIterator freemarker.template.TemplateHashModelEx2$KeyValuePair top freemarker.template.TemplateModel
StackMap stack:
aload 11
checkcast freemarker.template.TemplateScalarModel
invokeinterface freemarker.template.TemplateScalarModel.getAsString:()Ljava/lang/String;
astore 10
end local 11 start local 10 36: aload 9
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePair.getValue:()Lfreemarker/template/TemplateModel;
astore 11
start local 11 37: ldc "encoding"
aload 10
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 40
38: aload 0
ldc "encoding"
aload 11
invokevirtual freemarker.core.GetOptionalTemplateMethod.getStringOption:(Ljava/lang/String;Lfreemarker/template/TemplateModel;)Ljava/lang/String;
astore 6
39: goto 47
StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment java.lang.String freemarker.template.TemplateHashModelEx java.lang.String int freemarker.template.TemplateHashModelEx2$KeyValuePairIterator freemarker.template.TemplateHashModelEx2$KeyValuePair java.lang.String freemarker.template.TemplateModel
StackMap stack:
40: ldc "parse"
aload 10
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 43
41: aload 0
ldc "parse"
aload 11
invokevirtual freemarker.core.GetOptionalTemplateMethod.getBooleanOption:(Ljava/lang/String;Lfreemarker/template/TemplateModel;)Z
istore 7
42: goto 47
43: StackMap locals:
StackMap stack:
aload 0
getfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
iconst_1
bipush 7
anewarray java.lang.Object
dup
iconst_0
44: ldc "Unsupported option "
aastore
dup
iconst_1
new freemarker.core._DelayedJQuote
dup
aload 10
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_2
ldc "; valid names are: "
aastore
dup
iconst_3
45: new freemarker.core._DelayedJQuote
dup
ldc "encoding"
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_4
ldc ", "
aastore
dup
iconst_5
new freemarker.core._DelayedJQuote
dup
ldc "parse"
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
bipush 6
ldc "."
aastore
46: invokestatic freemarker.core._MessageUtil.newMethodArgInvalidValueException:(Ljava/lang/String;I[Ljava/lang/Object;)Lfreemarker/template/TemplateModelException;
athrow
end local 11 end local 10 end local 9 47: StackMap locals:
StackMap stack:
aload 8
invokeinterface freemarker.template.TemplateHashModelEx2$KeyValuePairIterator.hasNext:()Z
ifne 28
end local 8 48: StackMap locals:
StackMap stack:
aload 3
aload 4
aload 6
iload 7
iconst_1
invokevirtual freemarker.core.Environment.getTemplateForInclusion:(Ljava/lang/String;Ljava/lang/String;ZZ)Lfreemarker/template/Template;
astore 8
start local 8 49: goto 55
end local 8 StackMap locals:
StackMap stack: java.io.IOException
50: astore 9
start local 9 51: new freemarker.core._TemplateModelException
dup
52: aload 9
iconst_3
anewarray java.lang.Object
dup
iconst_0
ldc "I/O error when trying to load optional template "
aastore
dup
iconst_1
new freemarker.core._DelayedJQuote
dup
aload 4
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_2
53: ldc "; see cause exception"
54: aastore
invokespecial freemarker.core._TemplateModelException.<init>:(Ljava/lang/Throwable;[Ljava/lang/Object;)V
athrow
end local 9 start local 8 55: StackMap locals: freemarker.template.Template
StackMap stack:
new freemarker.template.SimpleHash
dup
aload 3
invokevirtual freemarker.core.Environment.getObjectWrapper:()Lfreemarker/template/ObjectWrapper;
invokespecial freemarker.template.SimpleHash.<init>:(Lfreemarker/template/ObjectWrapper;)V
astore 9
start local 9 56: aload 9
ldc "exists"
aload 8
ifnull 57
iconst_1
goto 58
StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment java.lang.String freemarker.template.TemplateHashModelEx java.lang.String int freemarker.template.Template freemarker.template.SimpleHash
StackMap stack: freemarker.template.SimpleHash java.lang.String
57: iconst_0
StackMap locals: freemarker.core.GetOptionalTemplateMethod java.util.List int freemarker.core.Environment java.lang.String freemarker.template.TemplateHashModelEx java.lang.String int freemarker.template.Template freemarker.template.SimpleHash
StackMap stack: freemarker.template.SimpleHash java.lang.String int
58: invokevirtual freemarker.template.SimpleHash.put:(Ljava/lang/String;Z)V
59: aload 8
ifnull 62
60: aload 9
ldc "include"
new freemarker.core.GetOptionalTemplateMethod$1
dup
aload 0
aload 8
invokespecial freemarker.core.GetOptionalTemplateMethod$1.<init>:(Lfreemarker/core/GetOptionalTemplateMethod;Lfreemarker/template/Template;)V
invokevirtual freemarker.template.SimpleHash.put:(Ljava/lang/String;Ljava/lang/Object;)V
61: aload 9
ldc "import"
new freemarker.core.GetOptionalTemplateMethod$2
dup
aload 0
aload 3
aload 8
invokespecial freemarker.core.GetOptionalTemplateMethod$2.<init>:(Lfreemarker/core/GetOptionalTemplateMethod;Lfreemarker/core/Environment;Lfreemarker/template/Template;)V
invokevirtual freemarker.template.SimpleHash.put:(Ljava/lang/String;Ljava/lang/Object;)V
62: StackMap locals:
StackMap stack:
aload 9
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 63 0 this Lfreemarker/core/GetOptionalTemplateMethod;
0 63 1 args Ljava/util/List;
1 63 2 argCnt I
4 63 3 env Lfreemarker/core/Environment;
11 12 4 absTemplateName Ljava/lang/String;
16 63 4 absTemplateName Ljava/lang/String;
7 16 5 arg Lfreemarker/template/TemplateModel;
10 16 6 templateName Ljava/lang/String;
13 16 7 e Lfreemarker/template/MalformedTemplateNameException;
21 22 5 options Lfreemarker/template/TemplateHashModelEx;
23 63 5 options Lfreemarker/template/TemplateHashModelEx;
18 21 6 arg Lfreemarker/template/TemplateModel;
24 63 6 encoding Ljava/lang/String;
25 63 7 parse Z
27 48 8 kvpi Lfreemarker/template/TemplateHashModelEx2$KeyValuePairIterator;
29 47 9 kvp Lfreemarker/template/TemplateHashModelEx2$KeyValuePair;
36 47 10 optName Ljava/lang/String;
30 36 11 optNameTM Lfreemarker/template/TemplateModel;
37 47 11 optValue Lfreemarker/template/TemplateModel;
49 50 8 template Lfreemarker/template/Template;
55 63 8 template Lfreemarker/template/Template;
51 55 9 e Ljava/io/IOException;
56 63 9 result Lfreemarker/template/SimpleHash;
Exception table:
from to target type
10 11 12 Class freemarker.template.MalformedTemplateNameException
48 49 50 Class java.io.IOException
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
args
private boolean getBooleanOption(java.lang.String, freemarker.template.TemplateModel);
descriptor: (Ljava/lang/String;Lfreemarker/template/TemplateModel;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=10, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
instanceof freemarker.template.TemplateBooleanModel
ifne 5
1: aload 0
getfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
iconst_1
iconst_5
anewarray java.lang.Object
dup
iconst_0
2: ldc "The value of the "
aastore
dup
iconst_1
new freemarker.core._DelayedJQuote
dup
aload 1
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_2
ldc " option must be a boolean, but it was "
aastore
dup
iconst_3
3: new freemarker.core._DelayedAOrAn
dup
new freemarker.core._DelayedFTLTypeDescription
dup
aload 2
invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
invokespecial freemarker.core._DelayedAOrAn.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_4
ldc "."
aastore
4: invokestatic freemarker.core._MessageUtil.newMethodArgInvalidValueException:(Ljava/lang/String;I[Ljava/lang/Object;)Lfreemarker/template/TemplateModelException;
athrow
5: StackMap locals:
StackMap stack:
aload 2
checkcast freemarker.template.TemplateBooleanModel
invokeinterface freemarker.template.TemplateBooleanModel.getAsBoolean:()Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lfreemarker/core/GetOptionalTemplateMethod;
0 6 1 optionName Ljava/lang/String;
0 6 2 value Lfreemarker/template/TemplateModel;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
optionName
value
private java.lang.String getStringOption(java.lang.String, freemarker.template.TemplateModel);
descriptor: (Ljava/lang/String;Lfreemarker/template/TemplateModel;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=10, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
instanceof freemarker.template.TemplateScalarModel
ifne 5
1: aload 0
getfield freemarker.core.GetOptionalTemplateMethod.methodName:Ljava/lang/String;
iconst_1
iconst_5
anewarray java.lang.Object
dup
iconst_0
2: ldc "The value of the "
aastore
dup
iconst_1
new freemarker.core._DelayedJQuote
dup
aload 1
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_2
ldc " option must be a string, but it was "
aastore
dup
iconst_3
3: new freemarker.core._DelayedAOrAn
dup
new freemarker.core._DelayedFTLTypeDescription
dup
aload 2
invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
invokespecial freemarker.core._DelayedAOrAn.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_4
ldc "."
aastore
4: invokestatic freemarker.core._MessageUtil.newMethodArgInvalidValueException:(Ljava/lang/String;I[Ljava/lang/Object;)Lfreemarker/template/TemplateModelException;
athrow
5: StackMap locals:
StackMap stack:
aload 2
checkcast freemarker.template.TemplateScalarModel
aconst_null
aconst_null
invokestatic freemarker.core.EvalUtil.modelToString:(Lfreemarker/template/TemplateScalarModel;Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lfreemarker/core/GetOptionalTemplateMethod;
0 6 1 optionName Ljava/lang/String;
0 6 2 value Lfreemarker/template/TemplateModel;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
optionName
value
}
SourceFile: "GetOptionalTemplateMethod.java"
NestMembers:
freemarker.core.GetOptionalTemplateMethod$1 freemarker.core.GetOptionalTemplateMethod$2
InnerClasses:
freemarker.core.GetOptionalTemplateMethod$1
freemarker.core.GetOptionalTemplateMethod$2
public abstract KeyValuePair = freemarker.template.TemplateHashModelEx2$KeyValuePair of freemarker.template.TemplateHashModelEx2
public abstract KeyValuePairIterator = freemarker.template.TemplateHashModelEx2$KeyValuePairIterator of freemarker.template.TemplateHashModelEx2