All Classes and Interfaces

说明
为一个特定类的方法生成AttributeAccess,如果类是 Map,则生成MapAA List,则生成ListAA 数组,则生成ArrayAA 普通PoJo对象,
A node that represents a bytecode instruction.
A MethodVisitor to insert before, after and around advices in methods and constructors.
#ajax id:{...}
匹配一切的匹配器,始终返回true ,通常用于默认的匹配,放在最后
用于算数表达式,对于加法,允许null值,但其他则不允许,将抛出异常 参考了webit
 
Analyzer<V extends Value>
A semantic bytecode analyzer.
A MethodVisitor that keeps track of stack map frame changes between visitFrame calls.
Thrown if a problem occurs during the analysis of a method.
exp1+exp2
An AnnotationVisitor that collects the Constants of the annotations it visits.
A node that represents an annotationn.
A visitor to visit a Java annotation.
通过antlr来生成Program
访问数组的封装类,attr需要任何能转成int的数值类型
ArrayMap is a generic key->value mapping data structure that is designed to be more memory efficient than a traditional HashMap.
ArraySet is a generic set data structure that is designed to be more memory efficient than a traditional HashSet.
ArrayUtils contains some methods that you can call to find out the most efficient increments by which to grow arrays.
a+b,a-b,a*b,a/b,a%b
一个字节码增强来访问属性
 
 
A ContentHandler that transforms XML document into Java class file.
Keep track the class and method etc when doing scanning/enhancement
Capture any exception raised during ASM operations
An Attribute that can print the ASM code to create an equivalent attribute.
A Printer that prints the ASM code to generate the classes if visits.
抽象语法树结点基础类
A non standard class, field, method or code attribute.
封装了一个获取对象的属性的值的方法
 
An Interpreter for BasicValue values.
A Value that is represented by its type in a seven types type system.
An extended BasicInterpreter that checks that bytecode instructions are correctly used.
 
antlr 语法解析错的处理策略。
Beetl 配置类
Beetl异常基类,此异常包含了错误码,错误符号,所属的模板文件,以及错误详情,错误栈
 
定界符或者占位符里的Beetl脚本
一个综合展示Beetl功能代码 * @author
语法解析异常
Beetl运行时,用于获取各种运行时
 
 
 
 
Beetl使用方法
 
{ statement1;statement2 }
{ statement1;statement2 }
模板变量或者标签的暂存区
break;
模板变量对应的类型,其内容是字节
类加载器,通过字节装载类。
A dynamically extensible vector of bytes.
混合了字节和字符的Writer
 
 
提供某些高速场景下的writer,无需分配char[]
使用Caffeine
An AnnotationVisitor that checks that its methods are properly used.
A ClassVisitor that checks that its methods are properly used.
A FieldVisitor that checks that its methods are properly used.
A MethodVisitor that checks that its methods are properly used.
A SignatureVisitor that checks that its methods are properly used.
A ClassVisitor that collects the Constants of the classes it visits.
Java类的语法树结点
A node that represents a class.
A ClassVisitor that renames fields and methods, and removes debug info.
 
ClassPath加载器,如果不指定classLoader,则使用加载beetl.jar的classloader,如果不指定root,则是默认的根路径, 如果不指定模板字符集,则采用配置文件的resource.charset 配置 注意,采用加载方式是classloader.getClass().getResource() 而不是classloader,如果需要采用classloader,请参考源代码
A Java class parser to make a ClassVisitor visit an existing class.
在classloader下仅仅根据类名加载类,会尝试用系统内置的以及配置好的包名作为类的包名
A visitor to visit a Java class.
A ClassVisitor that generates classes in bytecode form.
A MethodVisitor that can be used to approximate method size.
a> b,a>=b,a==b,a>b,a>=b
复合加载器,依据对应的匹配器调用响应的加载器
模板配置,核心文件之一
 
 
配置文件的key
向控制台输出错误,并不抛出异常
A constant pool.
 
内部名
方法描述
方法名
字节码类型描述符
变量索引位置
var a = { ...}
模板渲染的Context
一个缓存的字节和字符数组,用于减少beetl渲染各个过程中渲染字符数组
 
TODO3,需要性能压测 模板渲染和计算中需要的临时存储空间,缓存以提高性能
continue;
 
 
重新构造AST,增加行断点,并分析变量位置
 
用于调试
 
 
传递一个DebugContext,主要功能是变量名称和变量值
 
 
 
 
 
为一个特定类的方法生成AttributeAccess,如果类是 Map,则生成MapAA List,则生成ListAA 数组,则生成ArrayAA 普通PoJo对象,
html标签的属性名转为为变量名字 ,user-provider 转化userProvider
本地的一个实现,采用ConcurrentHashMap
存储Program的缓存,默认是采用DefaultBeetlCache,可以通过设置 IBeetlCache 属性来设置新的缓存对象
默认的Beetl配置
通过维护 Collection 的引用,来避免重复创建 Collection 的实例 当 Collection 的容量较大时,MemoryManager的优势开始凸显,减少了 Collection 扩容的开销
 
默认的本地调用安全管理器,黑名单方式,不允许调用java.lang.Runtime和Process,以及Class,sun.misc等 在实际项目中,可以考虑白名单方式,只允许调用哪些类,这些类通常是项目封装好的类.
Tag工场类
默认的视图引擎
支持俩个占位符号
指示模板引擎通过模板id来决定模板定界符,比如以property结尾的采用"#:" 和"回车"作为定界符
 
已过时。
保留了各种类型的空数组的引用,以避免申请多余的内存空间
 
; ; 多余分号
语法错的时候处理错误,避免同一个模板重复执行错误
当模板语法错或者运行错的时候,GroupTemplate默认将使用DefaultErrorHandler来处理错误
将BeetlException表达成ErrorInfo
已过时。 
事件监听器
表达式基类
 
 
快速运行时引擎 基于默认模板引擎,POJO 的属性采用 ASM 来访问
A FieldVisitor that collects the Constants of the fields it visits.
A node that represents a field instruction.
A node that represents a field.
A visitor to visit a Java field.
Beetl允许注册模板文件为一个方法
 
文件模板加载器
 
格式化函数,用于模版里占位符里的变量格式化后输出
${date,dateFormat='yyyy-mm-dd'}
for(user:list){}elsefor{}
 
片段再第二次解析后的状态
Frame<V extends Value>
A symbolic execution stack frame.
A node that represents a stack map frame.
Beetl 的函数接口,用户可以通过实现此接口来自定一方法
如果Function实现了此接口,则入参会在解析的时候修改
如果Function还实现了此接口,则此函数参数将使用安全输出符号
如果Function实现了此接口,则会添加额当前外行参
call();
将native方法包装成Function
for(var a=0;a <10;i++){}elsefor{}
 
用于遍历
此类子类将可以作为html 标签使用,除了能实现bindVars来初始化绑定的变量外,允许render方法里通过调用 方法bind(name,value) 来绑定变量,或者更常用的是binds(Object... array)如下是一个例子
A MethodVisitor with convenient methods to generate code.
Please implement this interface if your CharSequence has a getChars() method like the one in String that is faster than calling charAt() multiple times.
语法自定义控制,可以集成这个类实现特定扩展 1) 负责提供语法黑名单,则模板不允许出现特定语法,如java直接调用,或者while循环 2) 负责提供功一系列create方法构造语法树,可以重载这些create方法构造自己的语法树,比如,一个允许最多循环10次的while
语法节点 包含所处行号,列号,以及文本表示
系统核心类,重量级对象,详见指南
 
A helper class that aims to provide comparable growth performance to ArrayList, but on primitive arrays.
A reference to a field or a method.
html 配置
 
html解析异常
 
封装了html 标签调用,转为Beetl转为真正的Tag 执行
GeneralVarTagBinding 的html标签封装,带变量绑定的html标签调用的标签
缓存的标准接口,每个方法都必须线程安全
Beetl 配置
 
if()else{}
用于语句块声明中的流程控制
 
A node that represents an IINC instruction.
遍历时所需的循环状态
++i 或者 i++ 或者--i 或者i--
A node that represents an inner class.
A doubly linked list of AbstractInsnNode objects.
A node that represents a zero operand instruction.
实例的语法树结点
A MethodVisitor providing a more detailed API to generate and transform instructions.
A semantic bytecode interpreter.
A node that represents an instruction with a single int operand.
用于输出 int/long 类型到 Writer 的高性能工具类
A node that represents an invokedynamic instruction.
 
 
变量在context中的索引
A Jar file optimizer.
var a = [1,2,3]
{a:1,b:2}
A MethodVisitor that removes JSR instructions and inlines the referenced subroutines.
A node that represents a jump instruction.
A label represents a position in the bytecode of a method.
An AbstractInsnNode that encapsulates a Label.
A node that represents an LDC instruction.
A node that represents a line number declaration.
访问List的封装类,attr是整形或者BigDecimal
String ,Number ,Boolean
A node that represents a type annotation on a local or resource variable.
A node that represents a local variable declaration.
A MethodVisitor that renumbers local variables in their order of appearance.
日志实现
提供给外部的实现
日志级别的标识
SparseIntArray 的内部是通过两个数组对数据进行存储的, key 为 long 数组, value 为 Object 数组 SparseArray mapping longs to Objects.
A node that represents a LOOKUPSWITCH instruction.
缓存保留最常使用的模板
BEGIN LAYOUTLIB CHANGE This is a custom version that doesn't use the non standard LinkedHashMap#eldest.
 
 
可动态存入模板的ResourceLoader
匹配器接口,实现类必须实现equals和hashCode接口
A named method descriptor.
An MethodVisitor that collects the Constants of the methods it visits.
A node that represents a method instruction.
传入对象,获取对象对应的属性值 PojoMethodInvoker
A node that represents a method.
A MethodVisitor that renames fields and methods, and removes debug info.
A visitor to visit a Java method.
模拟debug的暂停,这里不暂停
A node that represents a MULTIANEWARRAY instruction.
此Function代表了一个类有多个同名方法。
严格MVC限制异常
A MAPPING from names to names, used to rename classes, fields and methods.
Java 数组的语法树结点
Java 属性的语法树结点
Java方法直接调用 xxx.abc().ef.ttt();
Java 方法的语法树结点
Java 结点
Native方法调用异常
判断是否允许调用本地方法
-exp
无缓存,适用于过多的模板,比如在线体验
 
 
标识一个类或者方法非线程安全
!
int 转 Integer装箱方法的优化,取消了Integer.intValue()原有正负数判断
指定类包含的所有方法,并且按照方法名归类
用于本地调用类型转化
java对象一些操作util类,并缓存一些中间结果以提高性能
用于在线debug
在线运行的模板引擎,为了防止用户胡乱输入,对循环,安全调用做了限制
线上引擎的语法创建者,通过重写 forwhile 语句块来限制循环次数等
受限制的循环,用于重写循环块,主要是对最大循环次数作了限制
 
Defines the JVM opcodes, access flags and array type codes.
exp1 or exp2
Container to ease passing around a tuple of two objects.
A node that represents a parameter access and className.
Commonly used regular expression patterns.
 
 
${exp,format=""}
 
传入对象,获取对象对应的属性值,或者调用PojoMethodInvoker.set(Object, Object) 设置对象值
用于原始数据类型数组操作的工具类
An abstract converter from visit events to text.
Processor is a command line tool that can be used for bytecode waving directed by XSL transformation.
脚本运行程序,代表了模板转化为beetl脚本语言
结合AntlrProgramBuilder 将模板生成Program,该类负责记录变量定义的位置和出现的位置
脚本的描述
通过反射获取bean属性,注意,如果属性获取不到,检测是否是否有个get(Object xxx)方法
A class responsible for remapping types and names.
An AnnotationVisitor adapter for type remapping.
A ClassVisitor for type remapping.
A FieldVisitor adapter for type remapping.
A LocalVariablesSorter for type mapping.
A SignatureVisitor adapter for type mapping.
代表模板资源,如文件,数据库Clob字段,后者加密模板等等
ResourceLoader 负责根据GroupTemplate提供的Key,来获取Resource,这些Resource可以是文件, 字符串,加密的文本,以及数据库Blob字段等
向控制台输出错误,并抛出异常,这样render方法必须扑捉此异常做一定处理
return
SAXAdapter
SAXAnnotationAdapter
A ClassVisitor that generates SAX 2.0 events from the visited class.
A MethodVisitor that generates SAX 2.0 events from the visited method.
SAXFieldAdapter
模板类
 
 
 
same with switch-case
A ClassVisitor that adds a serial version unique identifier to a class if missing.
A class file shrinker utility.
A type signature parser to make a signature visitor visit an existing signature.
A visitor to visit a generic signature.
A signature visitor that generates signatures in string format.
A Remapper using a Map to define its mapping.
An extended BasicVerifier that performs more precise verifications.
对单个native方法的封装
一个缓存Writer,降低内存每次分配和扩展,能较大程度提高性能。
 
存储的Beetl片段内容
An Interpreter for SourceValue values.
A Value that is represented by its type in a two types type system.
SparseArray 的内部是通过两个数组对数据进行存储的, key 为 int 数组, value 为 Object 数组 - SparseArray 比 HashMap 更省内存, - 在某些条件下性能更好,它避免了对 key 的自动装箱(int 转为 Integer 类型) - 由于是整数key,所以添加删除可以使用二分查找 - ...
SparseBooleanArray 的内部是通过两个数组对数据进行存储的, key 为 int 数组, value 为 boolean 数组 SparseBooleanArrays map integers to booleans.
SparseIntArray 的内部是通过两个数组对数据进行存储的, key 为 int 数组, value 为 int 数组 SparseIntArrays map integers to integers.
SparseLongArray 的内部是通过两个数组对数据进行存储的, key 为 int 数组, value 为 long 数组 SparseLongArrays map integers to longs.
检查key以给定的字符串开头的匹配器
执行语句
表达式语句,如fun();
A ClassVisitor that merges clinit methods into a single one.
模板的静态部分
模板的静态部分
模板变量对应的类型,其内容是字符
字符模板资源
字符串模板加载器
类似go语言的switch
 
A code generator for switch statements.
A node that represents a TABLESWITCH instruction.
标签函数,用于处理一段模板快
标签函数工厂类
标签,如:
 
模板类,不能被重用,如果需要一个可重用的Template,使用TemplateProxy
模板引擎接口
提供一个可重用的模板引擎
三元表达式 condtion?
 
An Attribute that can print a readable representation of itself.
A Printer that prints a disassembled view of the classes it visits.
文本解析成beetl脚本,按照各种定位符,html标记解析成对应的Fragment,然后再格式化,最后输出成beetl脚本
将文本转为模板语言解析过程中的异常
文本工具类 修改自 android.text.TextUtil
An interface for splitting strings according to rules that are opaque to the user of this interface.
 
标识一个类或者方法是线程安全的
An AnnotationVisitor that prints the annotations it visits with a Printer.
A ClassVisitor that prints the classes it visits with a Printer.
A FieldVisitor that prints the fields it visits with a Printer.
A MethodVisitor that prints the methods it visits with a Printer.
A SignatureVisitor that prints a disassembled view of the signature it visits.
将模版转化为beetl script的代码,此为核心代码之一.似乎有一1.x有个小bug,换行导致输出乱了
A node that represents a try catch block.
A MethodVisitor adapter to sort the exception handlers.
try{ }catch(error){ }
A Java field or method type.
A node that represents a type annotationn.
A node that represents a type instruction.
The path to a type argument, wildcard bound, array element type, or static inner type within an enclosing type.
A reference to a type appearing in a class, field or method declaration, or on an instruction.
Class to configure several of the util classes.
An immutable symbolic value for semantic interpretation of bytecode.
var a=1,b=2
var xxx = exp;
user.name
var c
 
A node that represents a local variable instruction.
user.name
call(xxx.cc = exp); 返回是exp
var xxx.cc = exp;
已过时。
取消,报错体验跟VarRef不一致,当变量不存在的时候,应该是NOT_DEFINED,而不是NULL
a.[]
list.
虚拟属性
虚拟属性,通过class注册,这样可以渲染输出而不需要的增加新模型 如user.gender user.
Web应用加载器
while(exp) whileBody
本地调用安全管理器,白名单方式