jstrachan 2002/10/23 03:58:59
Modified: jelly/src/java/org/apache/commons/jelly/impl
DynamicTagLibrary.java
jelly/src/test/org/apache/commons/jelly/define suite.jelly
Log:
Applied Tim Anderson's patch to fix dynamic tag libraries so that inheritence works
properly now.
Revision Changes Path
1.6 +6 -7
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/impl/DynamicTagLibrary.java
Index: DynamicTagLibrary.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/impl/DynamicTagLibrary.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DynamicTagLibrary.java 16 Oct 2002 12:45:52 -0000 1.5
+++ DynamicTagLibrary.java 23 Oct 2002 10:58:59 -0000 1.6
@@ -98,13 +98,7 @@
return new TagScript(
new TagFactory() {
public Tag createTag(String name, Attributes attributes) throws
Exception {
- Tag answer = DynamicTagLibrary.this.createTag(name, attributes);
-
- // delegate to my parent instead
- if ( answer == null && parent != null ) {
- return parent.createTag(name, attributes);
- }
- return answer;
+ return DynamicTagLibrary.this.createTag(name, attributes);
}
}
);
@@ -122,7 +116,12 @@
else if ( value instanceof TagFactory ) {
TagFactory factory = (TagFactory) value;
return factory.createTag(name, attributes);
+ }
+ else if ( parent != null ) {
+ // delegate to the parent
+ return parent.createTag(name, attributes);
}
+
return null;
}
1.4 +22 -0
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/define/suite.jelly
Index: suite.jelly
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/define/suite.jelly,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- suite.jelly 28 Aug 2002 09:19:57 -0000 1.3
+++ suite.jelly 23 Oct 2002 10:58:59 -0000 1.4
@@ -97,5 +97,27 @@
actual="${customer.dynaClass.name}"/>
</test:case>
+
+<test:case name="testTaglibInheritTest" xmlns="taglibInherit">
+
+ <define:taglib uri="taglibInherit" inherit="false">
+ <define:tag name="foo">
+ bar
+ </define:tag>
+ </define:taglib>
+
+ <define:taglib uri="taglibInherit" inherit="true">
+ <define:tag name="foo2">
+ bar2
+ </define:tag>
+ </define:taglib>
+
+ <j:set var="output">
+ <foo/>
+ </j:set>
+
+ <test:assertEquals expected="bar" actual="${output}"/>
+
+</test:case>
</test:suite>
--
To unsubscribe, e-mail: <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>