Package org.apache.jasper.compiler
Class Generator
- java.lang.Object
-
- org.apache.jasper.compiler.Generator
-
class Generator extends java.lang.ObjectGenerate Java source from Nodes
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classGenerator.FragmentHelperClassKeeps track of the generated Fragment Helper Classprivate static classGenerator.GenBufferA class for generating codes to a buffer.(package private) classGenerator.GenerateVisitorA visitor that generates codes for the elements in the page.private static classGenerator.TagHandlerInfoClass storing the result of introspecting a custom tag handler.
-
Field Summary
Fields Modifier and Type Field Description private Generator.GenBufferarrayBufferprivate BeanRepositorybeanInfoprivate booleanbreakAtLFprivate JspCompilationContextctxtprivate ErrorDispatchererrprivate Generator.FragmentHelperClassfragmentHelperClassprivate booleangenBytesprivate booleanisPoolingEnabledprivate java.util.ArrayList<Generator.GenBuffer>methodsBufferedprivate static java.lang.Class[]OBJECT_CLASSprivate ServletWriteroutprivate PageInfopageInfoprivate java.util.Set<java.lang.String>tagHandlerPoolNames
-
Constructor Summary
Constructors Constructor Description Generator(ServletWriter out, Compiler compiler)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcompileTagHandlerPoolList(Node.Nodes page)Compiles list of tag handler pool names.(package private) static java.lang.Stringescape(java.lang.String s)private voidgenCommonPostamble()Common part of postamble, shared by both servlets and tag files.static voidgenerate(ServletWriter out, Compiler compiler, Node.Nodes page)The main entry for Generator.private voidgenerateConstructor(java.lang.String className)private voidgenerateDeclarations(Node.Nodes page)Generates declarations.private static voidgenerateLocalVariables(ServletWriter out, Node n, boolean genBytes)private voidgeneratePageScopedVariables(JasperTagInfo tagInfo)private voidgeneratePostamble(Node.Nodes page)Generates the ending part of the static portion of the servlet.private voidgeneratePreamble(Node.Nodes page)Generates the beginning of the static portion of the servlet.voidgenerateSetDynamicAttribute()private voidgenerateSetJspContext(javax.servlet.jsp.tagext.TagInfo tagInfo)private voidgenerateTagHandlerAttributes(javax.servlet.jsp.tagext.TagInfo tagInfo)Generates declarations for tag handler attributes, and defines the getter and setter methods for each.private voidgenerateTagHandlerDestroy()Generates the _jspDestroy() method which is responsible for calling the release() method on every tag handler in any of the tag handler pools.private voidgenerateTagHandlerInit()Generates the _jspInit() method for instantiating the tag handler pools.private voidgenerateTagHandlerPostamble(javax.servlet.jsp.tagext.TagInfo tagInfo)private voidgenerateTagHandlerPreamble(JasperTagInfo tagInfo, Node.Nodes tag)private voidgenerateXmlProlog(Node.Nodes page)Generates an XML Prolog, which includes an XML declaration and an XML doctype declaration.private voidgenPreambleClassVariableDeclarations(java.lang.String className)Declare tag handler pools (tags of the same type and with the same attribute set share the same tag handler pool) (shared by servlet and tag handler preamble generation)private voidgenPreambleImports()Generate preamble imports (shared by servlet and tag handler preamble generation)private voidgenPreambleMethods()Declare general-purpose methods (shared by servlet and tag handler preamble generation)private voidgenPreamblePackage(java.lang.String packageName)Generate preamble package name (shared by servlet and tag handler preamble generation)private voidgenPreambleStaticInitializers()Generation of static initializers in preamble.(package private) static java.lang.Stringquote(char c)Single quote and escape a character(package private) static java.lang.Stringquote(java.lang.String s)private java.lang.StringtoGetterMethod(java.lang.String attrName)private java.lang.StringtoSetterMethodName(java.lang.String attrName)
-
-
-
Field Detail
-
OBJECT_CLASS
private static final java.lang.Class[] OBJECT_CLASS
-
out
private ServletWriter out
-
methodsBuffered
private java.util.ArrayList<Generator.GenBuffer> methodsBuffered
-
fragmentHelperClass
private Generator.FragmentHelperClass fragmentHelperClass
-
err
private ErrorDispatcher err
-
beanInfo
private BeanRepository beanInfo
-
ctxt
private JspCompilationContext ctxt
-
isPoolingEnabled
private boolean isPoolingEnabled
-
breakAtLF
private boolean breakAtLF
-
genBytes
private boolean genBytes
-
pageInfo
private PageInfo pageInfo
-
tagHandlerPoolNames
private java.util.Set<java.lang.String> tagHandlerPoolNames
-
arrayBuffer
private Generator.GenBuffer arrayBuffer
-
-
Constructor Detail
-
Generator
Generator(ServletWriter out, Compiler compiler)
Constructor.
-
-
Method Detail
-
quote
static java.lang.String quote(java.lang.String s)
- Parameters:
s- the input string- Returns:
- quoted and escaped string, per Java rule
-
escape
static java.lang.String escape(java.lang.String s)
- Parameters:
s- the input string- Returns:
- escaped string, per Java rule
-
quote
static java.lang.String quote(char c)
Single quote and escape a character
-
generateDeclarations
private void generateDeclarations(Node.Nodes page) throws JasperException
Generates declarations. This includes "info" of the page directive, and scriptlet declarations.- Throws:
JasperException
-
compileTagHandlerPoolList
private void compileTagHandlerPoolList(Node.Nodes page) throws JasperException
Compiles list of tag handler pool names.- Throws:
JasperException
-
generateTagHandlerInit
private void generateTagHandlerInit()
Generates the _jspInit() method for instantiating the tag handler pools. For tag file, _jspInit has to be invoked manually, and the ServletConfig object explicitly passed.
-
generateTagHandlerDestroy
private void generateTagHandlerDestroy()
Generates the _jspDestroy() method which is responsible for calling the release() method on every tag handler in any of the tag handler pools.
-
genPreamblePackage
private void genPreamblePackage(java.lang.String packageName) throws JasperExceptionGenerate preamble package name (shared by servlet and tag handler preamble generation)- Throws:
JasperException
-
genPreambleImports
private void genPreambleImports() throws JasperExceptionGenerate preamble imports (shared by servlet and tag handler preamble generation)- Throws:
JasperException
-
genPreambleStaticInitializers
private void genPreambleStaticInitializers() throws JasperExceptionGeneration of static initializers in preamble. For example, dependant list, el function map, prefix map. (shared by servlet and tag handler preamble generation)- Throws:
JasperException
-
genPreambleClassVariableDeclarations
private void genPreambleClassVariableDeclarations(java.lang.String className) throws JasperExceptionDeclare tag handler pools (tags of the same type and with the same attribute set share the same tag handler pool) (shared by servlet and tag handler preamble generation)- Throws:
JasperException
-
genPreambleMethods
private void genPreambleMethods() throws JasperExceptionDeclare general-purpose methods (shared by servlet and tag handler preamble generation)- Throws:
JasperException
-
generatePreamble
private void generatePreamble(Node.Nodes page) throws JasperException
Generates the beginning of the static portion of the servlet.- Throws:
JasperException
-
generateXmlProlog
private void generateXmlProlog(Node.Nodes page)
Generates an XML Prolog, which includes an XML declaration and an XML doctype declaration.
-
generateConstructor
private void generateConstructor(java.lang.String className)
-
generateLocalVariables
private static void generateLocalVariables(ServletWriter out, Node n, boolean genBytes) throws JasperException
- Throws:
JasperException
-
genCommonPostamble
private void genCommonPostamble()
Common part of postamble, shared by both servlets and tag files.
-
generatePostamble
private void generatePostamble(Node.Nodes page)
Generates the ending part of the static portion of the servlet.
-
generate
public static void generate(ServletWriter out, Compiler compiler, Node.Nodes page) throws JasperException
The main entry for Generator.- Parameters:
out- The servlet output writercompiler- The compilerpage- The input page- Throws:
JasperException
-
generateTagHandlerPreamble
private void generateTagHandlerPreamble(JasperTagInfo tagInfo, Node.Nodes tag) throws JasperException
- Throws:
JasperException
-
generateTagHandlerPostamble
private void generateTagHandlerPostamble(javax.servlet.jsp.tagext.TagInfo tagInfo)
-
generateTagHandlerAttributes
private void generateTagHandlerAttributes(javax.servlet.jsp.tagext.TagInfo tagInfo) throws JasperExceptionGenerates declarations for tag handler attributes, and defines the getter and setter methods for each.- Throws:
JasperException
-
generateSetJspContext
private void generateSetJspContext(javax.servlet.jsp.tagext.TagInfo tagInfo)
-
generateSetDynamicAttribute
public void generateSetDynamicAttribute()
-
generatePageScopedVariables
private void generatePageScopedVariables(JasperTagInfo tagInfo)
-
toGetterMethod
private java.lang.String toGetterMethod(java.lang.String attrName)
-
toSetterMethodName
private java.lang.String toSetterMethodName(java.lang.String attrName)
-
-