|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.antlr.stringtemplate.StringTemplateGroup
public class StringTemplateGroup
Manages a group of named mutually-referential StringTemplate objects. Currently the templates must all live under a directory so that you can reference them as foo.st or gutter/header.st. To refresh a group of templates, just create a new StringTemplateGroup and start pulling templates from there. Or, set the refresh interval. Use getInstanceOf(template-name) to get a string template to fill in. The name of a template is the file name minus ".st" ending if present unless you name it as you load it. You can use the group file format also to define a group of templates (this works better for code gen than for html page gen). You must give a Reader to the ctor for it to load the group; this is general and distinguishes it from the ctors for the old-style "load template files from the disk". 10/2005 I am adding a StringTemplateGroupLoader concept so people can define supergroups within a group and have it load that group automatically.
Field Summary | |
---|---|
protected java.util.Map |
attributeRenderers
A Map |
protected boolean |
debugTemplateOutput
|
static StringTemplateErrorListener |
DEFAULT_ERROR_LISTENER
|
protected static java.lang.Class |
defaultTemplateLexerClass
You can set the lexer once if you know all of your groups use the same separator. |
protected java.util.List |
interfaces
Keep track of all interfaces implemented by this group. |
protected long |
lastCheckedDisk
|
protected StringTemplateErrorListener |
listener
Where to report errors. |
protected java.util.Map |
maps
Maps map names to HashMap objects. |
protected java.lang.String |
name
What is the group name |
protected static java.util.Map |
nameToGroupMap
Track all groups by name; maps name to StringTemplateGroup |
protected static java.util.Map |
nameToInterfaceMap
Track all interfaces by name; maps name to StringTemplateGroupInterface |
protected java.util.Set |
noDebugStartStopStrings
The set of templates to ignore when dumping start/stop debug strings |
protected static StringTemplate |
NOT_FOUND_ST
Used to indicate that the template doesn't exist. |
protected int |
refreshIntervalInSeconds
How long before tossing out all templates in seconds. |
protected java.lang.String |
rootDir
Under what directory should I look for templates? If null, to look into the CLASSPATH for templates as resources. |
protected StringTemplateGroup |
superGroup
Are we derived from another group? Templates not found in this group will be searched for in the superGroup recursively. |
protected java.lang.Class |
templateLexerClass
How to pull apart a template into chunks? |
protected java.util.Map |
templates
Maps template name to StringTemplate object |
protected boolean |
templatesDefinedInGroupFile
When templates are files on the disk, the refresh interval is used to know when to reload. |
protected java.lang.Class |
userSpecifiedWriter
Normally AutoIndentWriter is used to filter output, but user can specify a new one. |
Constructor Summary | |
---|---|
StringTemplateGroup(java.io.Reader r)
Create a group from the template group defined by a input stream. |
|
StringTemplateGroup(java.io.Reader r,
java.lang.Class lexer)
|
|
StringTemplateGroup(java.io.Reader r,
java.lang.Class lexer,
StringTemplateErrorListener errors)
|
|
StringTemplateGroup(java.io.Reader r,
java.lang.Class lexer,
StringTemplateErrorListener errors,
StringTemplateGroup superGroup)
Create a group from the input stream, but use a nondefault lexer to break the templates up into chunks. |
|
StringTemplateGroup(java.io.Reader r,
StringTemplateErrorListener errors)
|
|
StringTemplateGroup(java.lang.String name)
Create a group manager for some templates, all of which are loaded as resources via the classloader. |
|
StringTemplateGroup(java.lang.String name,
java.lang.Class lexer)
|
|
StringTemplateGroup(java.lang.String name,
java.lang.String rootDir)
Create a group manager for some templates, all of which are at or below the indicated directory. |
|
StringTemplateGroup(java.lang.String name,
java.lang.String rootDir,
java.lang.Class lexer)
|
Method Summary | |
---|---|
protected void |
checkRefreshInterval()
|
StringTemplate |
createStringTemplate()
StringTemplate object factory; each group can have its own. |
StringTemplate |
defineImplicitRegionTemplate(StringTemplate enclosingTemplate,
java.lang.String name)
Track all references to regions <@foo()>. |
void |
defineMap(java.lang.String name,
java.util.Map mapping)
Define a map for this group; not thread safe...do not keep adding these while you reference them. |
StringTemplate |
defineRegionTemplate(java.lang.String enclosingTemplateName,
java.lang.String regionName,
java.lang.String template,
int type)
Track all references to regions <@foo>...<@end> or <@foo()>. |
StringTemplate |
defineRegionTemplate(StringTemplate enclosingTemplate,
java.lang.String regionName,
java.lang.String template,
int type)
Track all references to regions <@foo>...<@end> or <@foo()>. |
StringTemplate |
defineTemplate(java.lang.String name,
java.lang.String template)
Define an examplar template; precompiled and stored with no attributes. |
StringTemplate |
defineTemplateAlias(java.lang.String name,
java.lang.String target)
Make name and alias for target. |
void |
doNotEmitDebugStringsForTemplate(java.lang.String templateName)
|
void |
emitDebugStartStopStrings(boolean emit)
Indicate whether ST should emit |
void |
emitTemplateStartDebugString(StringTemplate st,
StringTemplateWriter out)
|
void |
emitTemplateStopDebugString(StringTemplate st,
StringTemplateWriter out)
|
void |
error(java.lang.String msg)
|
void |
error(java.lang.String msg,
java.lang.Exception e)
|
AttributeRenderer |
getAttributeRenderer(java.lang.Class attributeClassType)
What renderer is registered for this attributeClassType for this group? If not found, as superGroup if it has one. |
StringTemplate |
getEmbeddedInstanceOf(StringTemplate enclosingInstance,
java.lang.String name)
|
StringTemplateErrorListener |
getErrorListener()
|
java.lang.String |
getFileCharEncoding()
|
java.lang.String |
getFileNameFromTemplateName(java.lang.String templateName)
(public so that people can override behavior; not a general purpose method) |
java.lang.String |
getGroupHierarchyStackString()
Walk up group hierarchy and show top down to this group |
protected java.io.InputStreamReader |
getInputStreamReader(java.io.InputStream in)
|
StringTemplate |
getInstanceOf(java.lang.String name)
The primary means of getting an instance of a template from this group. |
StringTemplate |
getInstanceOf(java.lang.String name,
java.util.Map attributes)
The primary means of getting an instance of a template from this group when you have a predefined set of attributes you want to use. |
protected StringTemplate |
getInstanceOf(StringTemplate enclosingInstance,
java.lang.String name)
A support routine that gets an instance of name knowing which ST encloses it for error messages. |
java.lang.String |
getMangledRegionName(java.lang.String enclosingTemplateName,
java.lang.String name)
The "foo" of t() ::= "<@foo()>" is mangled to "region#t#foo" |
java.util.Map |
getMap(java.lang.String name)
|
java.lang.String |
getName()
|
int |
getRefreshInterval()
|
java.lang.String |
getRootDir()
|
StringTemplateWriter |
getStringTemplateWriter(java.io.Writer w)
return an instance of a StringTemplateWriter that spits output to w. |
StringTemplateGroup |
getSuperGroup()
|
StringTemplate |
getTemplateDefinition(java.lang.String name)
Get the ST for 'name' in this group only |
java.lang.Class |
getTemplateLexerClass()
What lexer class to use to break up templates. |
java.lang.String |
getTemplateNameFromFileName(java.lang.String fileName)
Convert a filename relativePath/name.st to relativePath/name. |
java.util.Set |
getTemplateNames()
|
java.lang.String |
getUnMangledTemplateName(java.lang.String mangledName)
Return "t" from "region__t__foo" |
void |
implementInterface(java.lang.String interfaceName)
Indicate that this group implements this interface; load if necessary if not in the nameToInterfaceMap. |
void |
implementInterface(StringTemplateGroupInterface I)
Just track the new interface; check later. |
boolean |
isDefined(java.lang.String name)
Is there *any* definition for template 'name' in this template or above it in the group hierarchy? |
boolean |
isDefinedInThisGroup(java.lang.String name)
|
static StringTemplateGroup |
loadGroup(java.lang.String name)
|
static StringTemplateGroup |
loadGroup(java.lang.String name,
java.lang.Class lexer,
StringTemplateGroup superGroup)
|
static StringTemplateGroup |
loadGroup(java.lang.String name,
StringTemplateGroup superGroup)
|
static StringTemplateGroupInterface |
loadInterface(java.lang.String name)
|
protected StringTemplate |
loadTemplate(java.lang.String name,
java.io.BufferedReader r)
|
protected StringTemplate |
loadTemplate(java.lang.String name,
java.lang.String fileName)
|
protected StringTemplate |
loadTemplateFromBeneathRootDirOrCLASSPATH(java.lang.String fileName)
Load a template whose name is derived from the template filename. |
StringTemplate |
lookupTemplate(java.lang.String name)
|
StringTemplate |
lookupTemplate(StringTemplate enclosingInstance,
java.lang.String name)
Get the template called 'name' from the group. |
protected void |
parseGroup(java.io.Reader r)
|
static void |
registerDefaultLexer(java.lang.Class lexerClass)
|
static void |
registerGroupLoader(StringTemplateGroupLoader loader)
|
void |
registerRenderer(java.lang.Class attributeClassType,
java.lang.Object renderer)
Register a renderer for all objects of a particular type for all templates in this group. |
void |
setAttributeRenderers(java.util.Map renderers)
Specify a complete map of what object classes should map to which renderer objects for every template in this group (that doesn't override it per template). |
void |
setErrorListener(StringTemplateErrorListener listener)
|
void |
setFileCharEncoding(java.lang.String fileCharEncoding)
|
void |
setName(java.lang.String name)
|
void |
setRefreshInterval(int refreshInterval)
How often to refresh all templates from disk. |
void |
setRootDir(java.lang.String rootDir)
|
void |
setStringTemplateWriter(java.lang.Class c)
Specify a StringTemplateWriter implementing class to use for filtering output |
void |
setSuperGroup(java.lang.String superGroupName)
Called by group parser when ": supergroupname" is found. |
void |
setSuperGroup(StringTemplateGroup superGroup)
|
java.lang.String |
toString()
|
java.lang.String |
toString(boolean showTemplatePatterns)
|
protected void |
verifyInterfaceImplementations()
verify that this group satisfies its interfaces |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected java.lang.String name
protected java.util.Map templates
protected java.util.Map maps
protected java.lang.Class templateLexerClass
protected static java.lang.Class defaultTemplateLexerClass
protected java.lang.String rootDir
protected static java.util.Map nameToGroupMap
protected static java.util.Map nameToInterfaceMap
protected StringTemplateGroup superGroup
protected java.util.List interfaces
protected boolean templatesDefinedInGroupFile
protected java.lang.Class userSpecifiedWriter
protected boolean debugTemplateOutput
protected java.util.Set noDebugStartStopStrings
protected java.util.Map attributeRenderers
protected StringTemplateErrorListener listener
public static StringTemplateErrorListener DEFAULT_ERROR_LISTENER
protected static final StringTemplate NOT_FOUND_ST
protected int refreshIntervalInSeconds
protected long lastCheckedDisk
Constructor Detail |
---|
public StringTemplateGroup(java.lang.String name, java.lang.String rootDir)
public StringTemplateGroup(java.lang.String name, java.lang.String rootDir, java.lang.Class lexer)
public StringTemplateGroup(java.lang.String name)
public StringTemplateGroup(java.lang.String name, java.lang.Class lexer)
public StringTemplateGroup(java.io.Reader r)
public StringTemplateGroup(java.io.Reader r, StringTemplateErrorListener errors)
public StringTemplateGroup(java.io.Reader r, java.lang.Class lexer)
public StringTemplateGroup(java.io.Reader r, java.lang.Class lexer, StringTemplateErrorListener errors)
public StringTemplateGroup(java.io.Reader r, java.lang.Class lexer, StringTemplateErrorListener errors, StringTemplateGroup superGroup)
Method Detail |
---|
public java.lang.Class getTemplateLexerClass()
public java.lang.String getName()
public void setName(java.lang.String name)
public void setSuperGroup(StringTemplateGroup superGroup)
public void setSuperGroup(java.lang.String superGroupName)
public void implementInterface(StringTemplateGroupInterface I)
public void implementInterface(java.lang.String interfaceName)
public StringTemplateGroup getSuperGroup()
public java.lang.String getGroupHierarchyStackString()
public java.lang.String getRootDir()
public void setRootDir(java.lang.String rootDir)
public StringTemplate createStringTemplate()
protected StringTemplate getInstanceOf(StringTemplate enclosingInstance, java.lang.String name) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
public StringTemplate getInstanceOf(java.lang.String name)
public StringTemplate getInstanceOf(java.lang.String name, java.util.Map attributes)
public StringTemplate getEmbeddedInstanceOf(StringTemplate enclosingInstance, java.lang.String name) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
public StringTemplate lookupTemplate(StringTemplate enclosingInstance, java.lang.String name) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
public StringTemplate lookupTemplate(java.lang.String name)
protected void checkRefreshInterval()
protected StringTemplate loadTemplate(java.lang.String name, java.io.BufferedReader r) throws java.io.IOException
java.io.IOException
protected StringTemplate loadTemplateFromBeneathRootDirOrCLASSPATH(java.lang.String fileName)
public java.lang.String getFileNameFromTemplateName(java.lang.String templateName)
public java.lang.String getTemplateNameFromFileName(java.lang.String fileName)
protected StringTemplate loadTemplate(java.lang.String name, java.lang.String fileName)
protected java.io.InputStreamReader getInputStreamReader(java.io.InputStream in)
public java.lang.String getFileCharEncoding()
public void setFileCharEncoding(java.lang.String fileCharEncoding)
public StringTemplate defineTemplate(java.lang.String name, java.lang.String template)
public StringTemplate defineRegionTemplate(java.lang.String enclosingTemplateName, java.lang.String regionName, java.lang.String template, int type)
public StringTemplate defineRegionTemplate(StringTemplate enclosingTemplate, java.lang.String regionName, java.lang.String template, int type)
public StringTemplate defineImplicitRegionTemplate(StringTemplate enclosingTemplate, java.lang.String name)
public java.lang.String getMangledRegionName(java.lang.String enclosingTemplateName, java.lang.String name)
public java.lang.String getUnMangledTemplateName(java.lang.String mangledName)
public StringTemplate defineTemplateAlias(java.lang.String name, java.lang.String target)
public boolean isDefinedInThisGroup(java.lang.String name)
public StringTemplate getTemplateDefinition(java.lang.String name)
public boolean isDefined(java.lang.String name)
protected void parseGroup(java.io.Reader r)
protected void verifyInterfaceImplementations()
public int getRefreshInterval()
public void setRefreshInterval(int refreshInterval)
public void setErrorListener(StringTemplateErrorListener listener)
public StringTemplateErrorListener getErrorListener()
public void setStringTemplateWriter(java.lang.Class c)
public StringTemplateWriter getStringTemplateWriter(java.io.Writer w)
public void setAttributeRenderers(java.util.Map renderers)
public void registerRenderer(java.lang.Class attributeClassType, java.lang.Object renderer)
public AttributeRenderer getAttributeRenderer(java.lang.Class attributeClassType)
public java.util.Map getMap(java.lang.String name)
public void defineMap(java.lang.String name, java.util.Map mapping)
public static void registerDefaultLexer(java.lang.Class lexerClass)
public static void registerGroupLoader(StringTemplateGroupLoader loader)
public static StringTemplateGroup loadGroup(java.lang.String name)
public static StringTemplateGroup loadGroup(java.lang.String name, StringTemplateGroup superGroup)
public static StringTemplateGroup loadGroup(java.lang.String name, java.lang.Class lexer, StringTemplateGroup superGroup)
public static StringTemplateGroupInterface loadInterface(java.lang.String name)
public void error(java.lang.String msg)
public void error(java.lang.String msg, java.lang.Exception e)
public java.util.Set getTemplateNames()
public void emitDebugStartStopStrings(boolean emit)
public void doNotEmitDebugStringsForTemplate(java.lang.String templateName)
public void emitTemplateStartDebugString(StringTemplate st, StringTemplateWriter out) throws java.io.IOException
java.io.IOException
public void emitTemplateStopDebugString(StringTemplate st, StringTemplateWriter out) throws java.io.IOException
java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String toString(boolean showTemplatePatterns)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |