Parses the different types of Tapestry specifications.
Not threadsafe; it is the callers responsibility to ensure thread safety.
- Howard Lewis Ship
Perl5 pattern for asset names. Letter, followed by letter, number or underscore. Also allows
the special "$template" value.
Perl5 pattern for helper bean names. Letter, followed by letter, number or underscore.
Perl5 pattern for component type (which was known as an "alias" in earlier versions of
Tapestry). This is either a simple property name, or a series of property names seperated by
slashes (the latter being new in Tapestry 4.0). This defines a literal that can appear in a
library or application specification.
Perl5 pattern for component ids. Letter, followed by letter, number or underscore.
Perl5 pattern for component types (i.e., the type attribute of the <component>
element). Component types are an optional namespace prefix followed by a component type
(within the library defined by the namespace). Starting in 4.0, the type portion is actually
a series of identifiers seperated by slashes.
Extended version of
, but allows a series of
individual property names, seperated by periods. In addition, each name within the dotted
sequence is allowed to contain dashes.
Per5 pattern for extension names. Letter followed by letter, number, dash, period or
Perl5 pattern for library ids. Letter followed by letter, number or underscore.
Perl5 pattern for page names. Page names appear in library and application specifications, in
the <page> element. Starting with 4.0, the page name may look more like a path name,
consisting of a number of ids seperated by slashes. This is used to determine the folder
which contains the page specification or the page's template.
Perl5 pattern that parameter names must conform to. Letter, followed by letter, number or
Perl5 pattern that property names (that can be connected to parameters) must conform to.
Letter, followed by letter, number or underscore.
Perl5 pattern for service names. Letter followed by letter, number, dash, underscore or
- As of release 4.0, the <service> element (in 3.0 DTDs) is no longer
Very different between 3.0 and 4.0 DTD.
We can share a single map for all the XML attribute to object conversions, since the keys are
Set to true if parsing the 4.0 DTD.
The attributes of the current element, as a map (string keyed on string).
The name of the current element.
The root object parsed: a component or page specification, a library specification, or an
This constructor is a convienience used by some tests.
The full constructor, used within Tapestry.
Special state for a number of specification types that can support the <description>
Special state for a number of elements that can support the nested <meta> meta data
element (<property> in 3.0 DTD).
Close a stream (if not null), ignoring any errors.
if (initialValue != null && !_dtd40)
ia.setPath(prefix == null ? path : prefix + path);
int commax = classAttribute.indexOf(',');
String className = commax < 0 ? classAttribute : classAttribute.substring(0, commax);
Handles a binding in a 3.0 DTD.
boolean hasCopyOf = HiveMind.isNonBlank(copyOf);
String attributeName = _dtd40 ? "property" : "property-name";
New in the 4.0 DTD. When using the 4.0 DTD, you must explicitly specify prefix if the asset
is not stored in the same domain as the specification file.
A throwback to the 3.0 DTD.