CatalinaDigesterpublic class CatalinaDigester extends com.sun.org.apache.commons.digester.Digester This extended digester filters out ${...} tokens to replace them with
matching system properties. |
Fields Summary |
---|
protected static IntrospectionUtils.PropertySource[] | source |
Methods Summary |
---|
public void | endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)Invoke inherited implementation after applying variable substitution
to the character data contained in the current element.
bodyText = updateBodyText(bodyText);
super.endElement(namespaceURI, localName, qName);
| public void | startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes list)Invoke inherited implementation after applying variable
substitution to any attribute values containing variable
references.
// ---------------------------------------------------------------- Methods
list = updateAttributes(list);
super.startElement(namespaceURI, localName, qName, list);
| private org.xml.sax.Attributes | updateAttributes(org.xml.sax.Attributes list)Returns an attributes list which contains all the attributes
passed in, with any text of form "${xxx}" in an attribute value
replaced by the appropriate value from the system property.
if (list.getLength() == 0) {
return list;
}
AttributesImpl newAttrs = new AttributesImpl(list);
int nAttributes = newAttrs.getLength();
for (int i = 0; i < nAttributes; ++i) {
String value = newAttrs.getValue(i);
try {
String newValue =
IntrospectionUtils.replaceProperties(value, null, source);
if (value != newValue) {
newAttrs.setValue(i, newValue);
}
}
catch (Exception e) {
// ignore - let the attribute have its original value
}
}
return newAttrs;
| private java.lang.StringBuffer | updateBodyText(java.lang.StringBuffer bodyText)Return a new StringBuffer containing the same contents as the
input buffer, except that data of form ${varname} have been
replaced by the value of that var as defined in the system property.
String in = bodyText.toString();
String out;
try {
out = IntrospectionUtils.replaceProperties(in, null, source);
} catch(Exception e) {
return bodyText; // return unchanged data
}
if (out == in) {
// No substitutions required. Don't waste memory creating
// a new buffer
return bodyText;
} else {
return new StringBuffer(out);
}
|
|