You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by sh...@apache.org on 2002/04/18 04:17:37 UTC
cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv JstlCoreTLV.java JstlXmlTLV.java
shawn 02/04/17 19:17:37
Modified: standard/src/org/apache/taglibs/standard/resources
Resources.properties
standard/src/org/apache/taglibs/standard/tlv
JstlCoreTLV.java JstlXmlTLV.java
Log:
Fixes bug 8072.
Revision Changes Path
1.26 +3 -0 jakarta-taglibs/standard/src/org/apache/taglibs/standard/resources/Resources.properties
Index: Resources.properties
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/resources/Resources.properties,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- Resources.properties 18 Apr 2002 01:22:22 -0000 1.25
+++ Resources.properties 18 Apr 2002 02:17:37 -0000 1.26
@@ -260,6 +260,9 @@
TLV_ILLEGAL_ORPHAN=\
Invalid use of "{0}" tag outside legitimate parent tag
+TLV_PARENT_WITHOUT_SUBTAG=\
+ Illegal "{0}" without child "{1}" tag
+
# Errors customized to particular tags (sort of) :-)
TLV_ILLEGAL_ORDER=\
1.17 +12 -0 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlCoreTLV.java
Index: JstlCoreTLV.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlCoreTLV.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- JstlCoreTLV.java 17 Apr 2002 17:59:23 -0000 1.16
+++ JstlCoreTLV.java 18 Apr 2002 02:17:37 -0000 1.17
@@ -149,6 +149,7 @@
private int depth = 0;
private Stack chooseDepths = new Stack();
private Stack chooseHasOtherwise = new Stack();
+ private Stack chooseHasWhen = new Stack();
private Stack urlTags = new Stack();
private String lastElementName = null;
private boolean bodyNecessary = false;
@@ -198,6 +199,12 @@
// check invariants for <choose>
if (chooseChild()) {
+ // mark <choose> for the first the first <when>
+ if (isCoreTag(ns, ln, WHEN)) {
+ chooseHasWhen.pop();
+ chooseHasWhen.push(new Boolean(true));
+ }
+
// ensure <choose> has the right children
if(!isCoreTag(ns, ln, WHEN) && !isCoreTag(ns, ln, OTHERWISE)) {
fail(Resources.getMessage("TLV_ILLEGAL_CHILD_TAG",
@@ -240,6 +247,7 @@
// we're a choose, so record new choose-specific state
if (isCoreTag(ns, ln, CHOOSE)) {
chooseDepths.push(new Integer(depth));
+ chooseHasWhen.push(new Boolean(false));
chooseHasOtherwise.push(new Boolean(false));
}
@@ -321,6 +329,10 @@
// update <choose>-related state
if (isCoreTag(ns, ln, CHOOSE)) {
+ Boolean b = (Boolean) chooseHasWhen.pop();
+ if (!b.booleanValue())
+ fail(Resources.getMessage("TLV_PARENT_WITHOUT_SUBTAG",
+ CHOOSE, WHEN));
chooseDepths.pop();
chooseHasOtherwise.pop();
}
1.12 +12 -1 jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlXmlTLV.java
Index: JstlXmlTLV.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlXmlTLV.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- JstlXmlTLV.java 17 Apr 2002 21:27:37 -0000 1.11
+++ JstlXmlTLV.java 18 Apr 2002 02:17:37 -0000 1.12
@@ -143,7 +143,7 @@
private int depth = 0;
private Stack chooseDepths = new Stack();
private Stack chooseHasOtherwise = new Stack();
- // private Stack expressionLanguage = new Stack();
+ private Stack chooseHasWhen = new Stack();
private String lastElementName = null;
private boolean bodyNecessary = false;
private boolean bodyIllegal = false;
@@ -193,6 +193,12 @@
// check invariants for <choose>
if (chooseChild()) {
+ // mark <choose> for the first the first <when>
+ if (isXmlTag(ns, ln, WHEN)) {
+ chooseHasWhen.pop();
+ chooseHasWhen.push(new Boolean(true));
+ }
+
// ensure <choose> has the right children
if(!isXmlTag(ns, ln, WHEN) && !isXmlTag(ns, ln, OTHERWISE)) {
fail(Resources.getMessage("TLV_ILLEGAL_CHILD_TAG",
@@ -228,6 +234,7 @@
// we're a choose, so record new choose-specific state
if (isXmlTag(ns, ln, CHOOSE)) {
chooseDepths.push(new Integer(depth));
+ chooseHasWhen.push(new Boolean(false));
chooseHasOtherwise.push(new Boolean(false));
}
@@ -299,6 +306,10 @@
// update <choose>-related state
if (isXmlTag(ns, ln, CHOOSE)) {
+ Boolean b = (Boolean) chooseHasWhen.pop();
+ if (!b.booleanValue())
+ fail(Resources.getMessage("TLV_PARENT_WITHOUT_SUBTAG",
+ CHOOSE, WHEN));
chooseDepths.pop();
chooseHasOtherwise.pop();
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>