Package org.apache.jasper.compiler
Class Generator
- java.lang.Object
-
- org.apache.jasper.compiler.Generator
-
class Generator extends java.lang.Object
Generate Java source from Nodes
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
Generator.FragmentHelperClass
Keeps track of the generated Fragment Helper Classprivate static class
Generator.GenBuffer
A class for generating codes to a buffer.(package private) class
Generator.GenerateVisitor
A visitor that generates codes for the elements in the page.private static class
Generator.TagHandlerInfo
Class storing the result of introspecting a custom tag handler.
-
Field Summary
Fields Modifier and Type Field Description private Generator.GenBuffer
arrayBuffer
private BeanRepository
beanInfo
private boolean
breakAtLF
private JspCompilationContext
ctxt
private ErrorDispatcher
err
private Generator.FragmentHelperClass
fragmentHelperClass
private boolean
genBytes
private boolean
isPoolingEnabled
private java.util.ArrayList<Generator.GenBuffer>
methodsBuffered
private static java.lang.Class[]
OBJECT_CLASS
private ServletWriter
out
private PageInfo
pageInfo
private 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 void
compileTagHandlerPoolList(Node.Nodes page)
Compiles list of tag handler pool names.(package private) static java.lang.String
escape(java.lang.String s)
private void
genCommonPostamble()
Common part of postamble, shared by both servlets and tag files.static void
generate(ServletWriter out, Compiler compiler, Node.Nodes page)
The main entry for Generator.private void
generateConstructor(java.lang.String className)
private void
generateDeclarations(Node.Nodes page)
Generates declarations.private static void
generateLocalVariables(ServletWriter out, Node n, boolean genBytes)
private void
generatePageScopedVariables(JasperTagInfo tagInfo)
private void
generatePostamble(Node.Nodes page)
Generates the ending part of the static portion of the servlet.private void
generatePreamble(Node.Nodes page)
Generates the beginning of the static portion of the servlet.void
generateSetDynamicAttribute()
private void
generateSetJspContext(TagInfo tagInfo)
private void
generateTagHandlerAttributes(TagInfo tagInfo)
Generates declarations for tag handler attributes, and defines the getter and setter methods for each.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.private void
generateTagHandlerInit()
Generates the _jspInit() method for instantiating the tag handler pools.private void
generateTagHandlerPostamble(TagInfo tagInfo)
private void
generateTagHandlerPreamble(JasperTagInfo tagInfo, Node.Nodes tag)
private void
generateXmlProlog(Node.Nodes page)
Generates an XML Prolog, which includes an XML declaration and an XML doctype declaration.private void
genPreambleClassVariableDeclarations(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 void
genPreambleImports()
Generate preamble imports (shared by servlet and tag handler preamble generation)private void
genPreambleMethods()
Declare general-purpose methods (shared by servlet and tag handler preamble generation)private void
genPreamblePackage(java.lang.String packageName)
Generate preamble package name (shared by servlet and tag handler preamble generation)private void
genPreambleStaticInitializers()
Generation of static initializers in preamble.(package private) static java.lang.String
quote(char c)
Single quote and escape a character(package private) static java.lang.String
quote(java.lang.String s)
private java.lang.String
toGetterMethod(java.lang.String attrName)
private java.lang.String
toSetterMethodName(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 JasperException
Generate preamble package name (shared by servlet and tag handler preamble generation)- Throws:
JasperException
-
genPreambleImports
private void genPreambleImports() throws JasperException
Generate preamble imports (shared by servlet and tag handler preamble generation)- Throws:
JasperException
-
genPreambleStaticInitializers
private void genPreambleStaticInitializers() throws JasperException
Generation 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 JasperException
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)- Throws:
JasperException
-
genPreambleMethods
private void genPreambleMethods() throws JasperException
Declare 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(TagInfo tagInfo)
-
generateTagHandlerAttributes
private void generateTagHandlerAttributes(TagInfo tagInfo) throws JasperException
Generates declarations for tag handler attributes, and defines the getter and setter methods for each.- Throws:
JasperException
-
generateSetJspContext
private void generateSetJspContext(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)
-
-