This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push: new d467154 Add code generation for TLD rules d467154 is described below commit d467154447863ffd9120f0878eeecde711e04d74 Author: remm <r...@apache.org> AuthorDate: Wed Jul 22 10:44:03 2020 +0200 Add code generation for TLD rules --- .../util/descriptor/tld/ImplicitTldRuleSet.java | 7 +++ .../tomcat/util/descriptor/tld/TldRuleSet.java | 51 +++++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/java/org/apache/tomcat/util/descriptor/tld/ImplicitTldRuleSet.java b/java/org/apache/tomcat/util/descriptor/tld/ImplicitTldRuleSet.java index 21dfe6a..9847be5 100644 --- a/java/org/apache/tomcat/util/descriptor/tld/ImplicitTldRuleSet.java +++ b/java/org/apache/tomcat/util/descriptor/tld/ImplicitTldRuleSet.java @@ -51,6 +51,13 @@ public class ImplicitTldRuleSet implements RuleSet { public void begin(String namespace, String name, Attributes attributes) { TaglibXml taglibXml = (TaglibXml) digester.peek(); taglibXml.setJspVersion(attributes.getValue("version")); + + StringBuilder code = digester.getGeneratedCode(); + if (code != null) { + code.append(digester.toVariableName(taglibXml)).append(".setJspVersion(\""); + code.append(attributes.getValue("version")).append("\");"); + code.append(System.lineSeparator()); + } } }); digester.addCallMethod(PREFIX + "/shortname", "setShortName", 0); diff --git a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java index 4f43a47..5a92b1f 100644 --- a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java +++ b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java @@ -50,6 +50,13 @@ public class TldRuleSet implements RuleSet { public void begin(String namespace, String name, Attributes attributes) { TaglibXml taglibXml = (TaglibXml) digester.peek(); taglibXml.setJspVersion(attributes.getValue("version")); + + StringBuilder code = digester.getGeneratedCode(); + if (code != null) { + code.append(digester.toVariableName(taglibXml)).append(".setJspVersion(\""); + code.append(attributes.getValue("version")).append("\");"); + code.append(System.lineSeparator()); + } } }); digester.addCallMethod(PREFIX + "/shortname", "setShortName", 0); @@ -137,10 +144,21 @@ public class TldRuleSet implements RuleSet { } private static class TagAttributeRule extends Rule { + private boolean allowShortNames = false; @Override public void begin(String namespace, String name, Attributes attributes) throws Exception { TaglibXml taglibXml = (TaglibXml) digester.peek(digester.getCount() - 1); - digester.push(new Attribute("1.2".equals(taglibXml.getJspVersion()))); + allowShortNames = "1.2".equals(taglibXml.getJspVersion()); + Attribute attribute = new Attribute(allowShortNames); + digester.push(attribute); + + StringBuilder code = digester.getGeneratedCode(); + if (code != null) { + code.append(System.lineSeparator()); + code.append(TldRuleSet.class.getName()).append(".Attribute ").append(digester.toVariableName(attribute)).append(" = new "); + code.append(TldRuleSet.class.getName()).append(".Attribute").append('(').append(Boolean.toString(allowShortNames)); + code.append(");").append(System.lineSeparator()); + } } @Override @@ -148,6 +166,13 @@ public class TldRuleSet implements RuleSet { Attribute attribute = (Attribute) digester.pop(); TagXml tag = (TagXml) digester.peek(); tag.getAttributes().add(attribute.toTagAttributeInfo()); + + StringBuilder code = digester.getGeneratedCode(); + if (code != null) { + code.append(digester.toVariableName(tag)).append(".getAttributes().add("); + code.append(digester.toVariableName(attribute)).append(".toTagAttributeInfo());"); + code.append(System.lineSeparator()); + } } } @@ -286,7 +311,15 @@ public class TldRuleSet implements RuleSet { private static class ScriptVariableRule extends Rule { @Override public void begin(String namespace, String name, Attributes attributes) throws Exception { - digester.push(new Variable()); + Variable variable = new Variable(); + digester.push(variable); + + StringBuilder code = digester.getGeneratedCode(); + if (code != null) { + code.append(System.lineSeparator()); + code.append(TldRuleSet.class.getName()).append(".Variable ").append(digester.toVariableName(variable)).append(" = new "); + code.append(TldRuleSet.class.getName()).append(".Variable").append("();").append(System.lineSeparator()); + } } @Override @@ -294,6 +327,13 @@ public class TldRuleSet implements RuleSet { Variable variable = (Variable) digester.pop(); TagXml tag = (TagXml) digester.peek(); tag.getVariables().add(variable.toTagVariableInfo()); + + StringBuilder code = digester.getGeneratedCode(); + if (code != null) { + code.append(digester.toVariableName(tag)).append(".getVariables().add("); + code.append(digester.toVariableName(variable)).append(".toTagVariableInfo());"); + code.append(System.lineSeparator()); + } } } @@ -356,6 +396,13 @@ public class TldRuleSet implements RuleSet { text = text.trim(); boolean value = "true".equalsIgnoreCase(text) || "yes".equalsIgnoreCase(text); setter.invoke(digester.peek(), Boolean.valueOf(value)); + + StringBuilder code = digester.getGeneratedCode(); + if (code != null) { + code.append(digester.toVariableName(digester.peek())).append('.').append(setter.getName()); + code.append('(').append(Boolean.valueOf(value)).append(");"); + code.append(System.lineSeparator()); + } } } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org