You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2020/07/22 08:47:04 UTC
[tomcat] branch 9.0.x updated: Add code generation for TLD rules
This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 9c4b131 Add code generation for TLD rules
9c4b131 is described below
commit 9c4b1318646450b740607e38273a3438fd8e8662
Author: remm <re...@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 f298fd3..9af81d2 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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org