Digester rule set for parsing Tag Library Descriptor files.
| 31 | * Digester rule set for parsing Tag Library Descriptor files. |
| 32 | */ |
| 33 | public class TldRuleSet implements RuleSet { |
| 34 | |
| 35 | /** |
| 36 | * Constructs a new TldRuleSet. |
| 37 | */ |
| 38 | public TldRuleSet() { |
| 39 | } |
| 40 | private static final String PREFIX = "taglib"; |
| 41 | private static final String VALIDATOR_PREFIX = PREFIX + "/validator"; |
| 42 | private static final String TAG_PREFIX = PREFIX + "/tag"; |
| 43 | private static final String TAGFILE_PREFIX = PREFIX + "/tag-file"; |
| 44 | private static final String FUNCTION_PREFIX = PREFIX + "/function"; |
| 45 | |
| 46 | @Override |
| 47 | public void addRuleInstances(Digester digester) { |
| 48 | |
| 49 | digester.addCallMethod(PREFIX + "/tlibversion", "setTlibVersion", 0); |
| 50 | digester.addCallMethod(PREFIX + "/tlib-version", "setTlibVersion", 0); |
| 51 | digester.addCallMethod(PREFIX + "/jspversion", "setJspVersion", 0); |
| 52 | digester.addCallMethod(PREFIX + "/jsp-version", "setJspVersion", 0); |
| 53 | digester.addRule(PREFIX, new Rule() { |
| 54 | // for TLD 2.0 and later, jsp-version is set by version attribute |
| 55 | @Override |
| 56 | public void begin(String namespace, String name, Attributes attributes) { |
| 57 | TaglibXml taglibXml = (TaglibXml) digester.peek(); |
| 58 | taglibXml.setJspVersion(attributes.getValue("version")); |
| 59 | |
| 60 | StringBuilder code = digester.getGeneratedCode(); |
| 61 | if (code != null) { |
| 62 | code.append(digester.toVariableName(taglibXml)).append(".setJspVersion(\""); |
| 63 | code.append(attributes.getValue("version")).append("\");"); |
| 64 | code.append(System.lineSeparator()); |
| 65 | } |
| 66 | } |
| 67 | }); |
| 68 | digester.addCallMethod(PREFIX + "/shortname", "setShortName", 0); |
| 69 | digester.addCallMethod(PREFIX + "/short-name", "setShortName", 0); |
| 70 | |
| 71 | // common rules |
| 72 | digester.addCallMethod(PREFIX + "/uri", "setUri", 0); |
| 73 | digester.addCallMethod(PREFIX + "/info", "setInfo", 0); |
| 74 | digester.addCallMethod(PREFIX + "/description", "setInfo", 0); |
| 75 | digester.addCallMethod(PREFIX + "/listener/listener-class", "addListener", 0); |
| 76 | |
| 77 | // validator |
| 78 | digester.addObjectCreate(VALIDATOR_PREFIX, ValidatorXml.class.getName()); |
| 79 | digester.addCallMethod(VALIDATOR_PREFIX + "/validator-class", "setValidatorClass", 0); |
| 80 | digester.addCallMethod(VALIDATOR_PREFIX + "/init-param", "addInitParam", 2); |
| 81 | digester.addCallParam(VALIDATOR_PREFIX + "/init-param/param-name", 0); |
| 82 | digester.addCallParam(VALIDATOR_PREFIX + "/init-param/param-value", 1); |
| 83 | digester.addSetNext(VALIDATOR_PREFIX, "setValidator", ValidatorXml.class.getName()); |
| 84 | |
| 85 | |
| 86 | // tag |
| 87 | digester.addObjectCreate(TAG_PREFIX, TagXml.class.getName()); |
| 88 | addDescriptionGroup(digester, TAG_PREFIX); |
| 89 | digester.addCallMethod(TAG_PREFIX + "/name", "setName", 0); |
| 90 | digester.addCallMethod(TAG_PREFIX + "/tagclass", "setTagClass", 0); |
nothing calls this directly
no outgoing calls
no test coverage detected