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>