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/17 19:59:23 UTC

cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv JstlBaseTLV.java JstlCoreTLV.java JstlFmtTLV.java JstlSqlTLV.java JstlXmlTLV.java

shawn       02/04/17 10:59:23

  Modified:    standard/examples/conf web.xml
               standard/src/org/apache/taglibs/standard/tlv
                        JstlBaseTLV.java JstlCoreTLV.java JstlFmtTLV.java
                        JstlSqlTLV.java JstlXmlTLV.java
  Log:
  Allow cross-breeding between EL and RT libraries.
  
  Revision  Changes    Path
  1.8       +4 -4      jakarta-taglibs/standard/examples/conf/web.xml
  
  Index: web.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/examples/conf/web.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- web.xml	17 Apr 2002 02:53:35 -0000	1.7
  +++ web.xml	17 Apr 2002 17:59:23 -0000	1.8
  @@ -29,7 +29,7 @@
       </taglib>
   
       <taglib>
  -        <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
  +        <taglib-uri>http://java.sun.com/jstl/core_rt</taglib-uri>
           <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
       </taglib>
   
  @@ -39,7 +39,7 @@
       </taglib>
   
       <taglib>
  -        <taglib-uri>http://java.sun.com/jstl/xml-rt</taglib-uri>
  +        <taglib-uri>http://java.sun.com/jstl/xml_rt</taglib-uri>
           <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
       </taglib>
   
  @@ -49,7 +49,7 @@
       </taglib>
   
       <taglib>
  -        <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
  +        <taglib-uri>http://java.sun.com/jstl/fmt_rt</taglib-uri>
           <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
       </taglib>
   
  @@ -59,7 +59,7 @@
       </taglib>
   
       <taglib>
  -        <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
  +        <taglib-uri>http://java.sun.com/jstl/sql_rt</taglib-uri>
           <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
       </taglib>
   
  
  
  
  1.8       +46 -3     jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlBaseTLV.java
  
  Index: JstlBaseTLV.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlBaseTLV.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JstlBaseTLV.java	5 Apr 2002 21:27:43 -0000	1.7
  +++ JstlBaseTLV.java	17 Apr 2002 17:59:23 -0000	1.8
  @@ -101,6 +101,16 @@
       protected static final String SESSION_SCOPE = "session";  
       protected static final String APPLICATION_SCOPE = "application";
   
  +    // Relevant URIs
  +    protected final String JSP = "http://java.sun.com/JSP/Page";   
  +    private final String CORE_EL = "http://java.sun.com/jstl/core";
  +    private final String FMT_EL = "http://java.sun.com/jstl/fmt";
  +    private final String SQL_EL = "http://java.sun.com/jstl/sql";
  +    private final String XML_EL = "http://java.sun.com/jstl/xml";
  +    private final String CORE_RT = "http://java.sun.com/jstl/core_rt";
  +    private final String FMT_RT = "http://java.sun.com/jstl/fmt_rt";
  +    private final String SQL_RT = "http://java.sun.com/jstl/sql_rt";
  +    private final String XML_RT = "http://java.sun.com/jstl/xml_rt";
   
       //*********************************************************************
       // Validation and configuration state (protected)
  @@ -161,6 +171,7 @@
   	    // parse the page
   	    SAXParserFactory f = SAXParserFactory.newInstance();
   	    f.setValidating(false);
  +	    f.setNamespaceAware(true);
   	    SAXParser p = f.newSAXParser();
   	    p.parse(page.getInputStream(), h);
   
  @@ -204,9 +215,41 @@
   		+ response;
       }
   
  -    // utility method to help us match elements in our tagset
  -    protected boolean isTag(String qn, String unqualifiedName) {
  -        return (qn.equals(prefix + ":" + unqualifiedName));
  +    // utility methods to help us match elements in our tagset
  +    protected boolean isTag(String tagUri,
  +			    String tagLn,
  +			    String matchUri,
  +			    String matchLn) {
  +	if (tagUri == null
  +	        || tagLn == null
  +		|| matchUri == null
  +		|| matchLn == null)
  +	    return false;
  +        return (tagUri.equals(matchUri) && tagLn.equals(matchLn));
  +    }
  +
  +    protected boolean isJspTag(String tagUri, String tagLn, String target) {
  +        return isTag(tagUri, tagLn, JSP, target);
  +    }
  +
  +    protected boolean isCoreTag(String tagUri, String tagLn, String target) {
  +        return (isTag(tagUri, tagLn, CORE_EL, target)
  +	     || isTag(tagUri, tagLn, CORE_RT, target));
  +    }
  +
  +    protected boolean isFmtTag(String tagUri, String tagLn, String target) {
  +        return (isTag(tagUri, tagLn, FMT_EL, target) 
  +	     || isTag(tagUri, tagLn, FMT_RT, target));
  +    }
  +
  +    protected boolean isSqlTag(String tagUri, String tagLn, String target) {
  +        return (isTag(tagUri, tagLn, SQL_EL, target) 
  +	     || isTag(tagUri, tagLn, SQL_RT, target));
  +    }
  +
  +    protected boolean isXmlTag(String tagUri, String tagLn, String target) {
  +        return (isTag(tagUri, tagLn, XML_EL, target)
  +	     || isTag(tagUri, tagLn, XML_RT, target));
       }
   
       // utility method to determine if an attribute exists
  
  
  
  1.16      +20 -17    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.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- JstlCoreTLV.java	8 Apr 2002 19:15:17 -0000	1.15
  +++ JstlCoreTLV.java	17 Apr 2002 17:59:23 -0000	1.16
  @@ -118,7 +118,7 @@
       private final String PARAM = "param";
       private final String URL_ENCODE = "urlEncode";
       // private final String EXPLANG = "expressionLanguage";
  -    private final String JSP_TEXT = "jsp:text";
  +    private final String TEXT = "text";
   
       // attribute names
       private final String EVAL = "evaluator";
  @@ -130,6 +130,7 @@
       private final String IMPORT_WITH_READER = "import varReader=''";
       private final String IMPORT_WITHOUT_READER = "import var=''";
   
  +
       //*********************************************************************
       // Contract fulfillment
   
  @@ -163,7 +164,7 @@
   
   	    // for simplicity, we can ignore <jsp:text> for our purposes
   	    // (don't bother distinguishing between it and its characters)
  -	    if (qn.equals(JSP_TEXT))
  +	    if (isJspTag(ns, ln, TEXT))
   		return;
   
   	    // check body-related constraint
  @@ -198,7 +199,7 @@
   	    // check invariants for <choose>
   	    if (chooseChild()) {
   		// ensure <choose> has the right children
  -		if(!isTag(qn, WHEN) && !isTag(qn, OTHERWISE)) {
  +		if(!isCoreTag(ns, ln, WHEN) && !isCoreTag(ns, ln, OTHERWISE)) {
   		    fail(Resources.getMessage("TLV_ILLEGAL_CHILD_TAG",
   			prefix, CHOOSE, qn));
   		}
  @@ -208,7 +209,7 @@
   		   fail(Resources.getMessage("TLV_ILLEGAL_ORDER",
   			qn, prefix, OTHERWISE, CHOOSE));
   		}
  -		if (isTag(qn, OTHERWISE)) {
  +		if (isCoreTag(ns, ln, OTHERWISE)) {
   		    chooseHasOtherwise.pop();
   		    chooseHasOtherwise.push(new Boolean(true));
   		}
  @@ -216,7 +217,7 @@
   	    }
   
   	    // check constraints for <param> vis-a-vis URL-related tags
  -	    if (isTag(qn, PARAM)) {
  +	    if (isCoreTag(ns, ln, PARAM)) {
   		// no <param> outside URL tags.
   		if (urlTags.empty() || urlTags.peek().equals(PARAM))
   		    fail(Resources.getMessage("TLV_ILLEGAL_ORPHAN", PARAM));
  @@ -237,31 +238,31 @@
   	    // now, modify state
   
   	    // we're a choose, so record new choose-specific state
  -	    if (isTag(qn, CHOOSE)) {
  +	    if (isCoreTag(ns, ln, CHOOSE)) {
   		chooseDepths.push(new Integer(depth));
   		chooseHasOtherwise.push(new Boolean(false));
   	    }
   
   	    // if we're introducing a URL-related tag, record it
  -	    if (isTag(qn, IMPORT)) {
  +	    if (isCoreTag(ns, ln, IMPORT)) {
   		if (hasAttribute(a, VAR_READER))
   		    urlTags.push(IMPORT_WITH_READER);
   		else
   		    urlTags.push(IMPORT_WITHOUT_READER);
  -	    } else if (isTag(qn, PARAM))
  +	    } else if (isCoreTag(ns, ln, PARAM))
   		urlTags.push(PARAM);
  -	    else if (isTag(qn, REDIRECT))
  +	    else if (isCoreTag(ns, ln, REDIRECT))
   		urlTags.push(REDIRECT);
  -	    else if (isTag(qn, URL))
  +	    else if (isCoreTag(ns, ln, URL))
   		urlTags.push(URL);
   
   	    // set up a check against illegal attribute/body combinations
   	    bodyIllegal = false;
   	    bodyNecessary = false;
  -	    if (isTag(qn, EXPR)) {
  +	    if (isCoreTag(ns, ln, EXPR)) {
   		if (hasAttribute(a, DEFAULT))
   		    bodyIllegal = true;
  -	    } else if (isTag(qn, SET)) {
  +	    } else if (isCoreTag(ns, ln, SET)) {
   		if (hasAttribute(a, VALUE))
   		    bodyIllegal = true;
   		// else
  @@ -270,7 +271,7 @@
   
   	    // record the most recent tag (for error reporting)
   	    lastElementName = qn;
  -	    lastElementId = a.getValue("http://java.sun.com/JSP/Page", "id");
  +	    lastElementId = a.getValue(JSP, "id");
   
   	    // we're a new element, so increase depth
   	    depth++;
  @@ -309,7 +310,7 @@
   	public void endElement(String ns, String ln, String qn) {
   
   	    // consistently, we ignore JSP_TEXT
  -	    if (qn.equals(JSP_TEXT))
  +	    if (isJspTag(ns, ln, TEXT))
   		return;
   
   	    // handle body-related invariant
  @@ -319,14 +320,16 @@
   	    bodyIllegal = false;	// reset: we've left the tag
   
   	    // update <choose>-related state
  -	    if (isTag(qn, CHOOSE)) {
  +	    if (isCoreTag(ns, ln, CHOOSE)) {
   		chooseDepths.pop();
   		chooseHasOtherwise.pop();
   	    }
   
   	    // update state related to URL tags
  -	    if (isTag(qn, IMPORT) || isTag(qn, PARAM) || isTag(qn, REDIRECT)
  -		    || isTag(qn, URL))
  +	    if (isCoreTag(ns, ln, IMPORT)
  +                    || isCoreTag(ns, ln, PARAM)
  +		    || isCoreTag(ns, ln, REDIRECT)
  +		    || isCoreTag(ns, ln, URL))
   		urlTags.pop();
   
   	    // update our depth
  
  
  
  1.15      +13 -10    jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlFmtTLV.java
  
  Index: JstlFmtTLV.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlFmtTLV.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- JstlFmtTLV.java	12 Apr 2002 19:16:50 -0000	1.14
  +++ JstlFmtTLV.java	17 Apr 2002 17:59:23 -0000	1.15
  @@ -77,6 +77,7 @@
    * </ul>
    * 
    * @author Shawn Bayern
  + * @author Jan Luehe
    */
   public class JstlFmtTLV extends JstlBaseTLV {
   
  @@ -187,32 +188,34 @@
                   fail(Resources.getMessage("TLV_INVALID_ATTRIBUTE",
                       SCOPE, qn, a.getValue(SCOPE)));
               if (qn.startsWith(prefix + ":")
  -                && !isTag(qn, SETLOCALE) 
  -		&& !isTag(qn, BUNDLE)
  -		&& !isTag(qn, TIMEZONE)
  +                && !isFmtTag(ns, ln, SETLOCALE) 
  +		&& !isFmtTag(ns, ln, BUNDLE)
  +		&& !isFmtTag(ns, ln, TIMEZONE)
                   && hasDanglingScope(a))
                   fail(Resources.getMessage("TLV_DANGLING_SCOPE", qn));
   
   	    // set up a check against illegal attribute/body combinations
   	    bodyIllegal = false;
   	    bodyNecessary = false;
  -	    if (isTag(qn, MESSAGE_PARAM)
  -		    || isTag(qn, FORMAT_NUMBER)
  -		    || isTag(qn, PARSE_NUMBER)
  -		    || isTag(qn, PARSE_DATE)) {
  +	    if (isFmtTag(ns, ln, MESSAGE_PARAM)
  +		    || isFmtTag(ns, ln, FORMAT_NUMBER)
  +		    || isFmtTag(ns, ln, PARSE_NUMBER)
  +		    || isFmtTag(ns, ln,  PARSE_DATE)) {
   		if (hasAttribute(a, VALUE))
   		    bodyIllegal = true;
   		else
   		    bodyNecessary = true;
  -	    } else if (isTag(qn, MESSAGE) && !hasAttribute(a, MESSAGE_KEY)) {
  +	    } else if (isFmtTag(ns, ln, MESSAGE)
  +		    && !hasAttribute(a, MESSAGE_KEY)) {
   		bodyNecessary = true;
  -	    } else if (isTag(qn, BUNDLE) && hasAttribute(a, BUNDLE_PREFIX)) {
  +	    } else if (isFmtTag(ns, ln, BUNDLE)
  +		    && hasAttribute(a, BUNDLE_PREFIX)) {
   		bodyNecessary = true;
   	    }
   
   	    // record the most recent tag (for error reporting)
   	    lastElementName = qn;
  -            lastElementId = a.getValue("http://java.sun.com/JSP/Page", "id");
  +            lastElementId = a.getValue(JSP, "id");
   	}
   
   	public void characters(char[] ch, int start, int length) {
  
  
  
  1.6       +9 -9      jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlSqlTLV.java
  
  Index: JstlSqlTLV.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tlv/JstlSqlTLV.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JstlSqlTLV.java	16 Apr 2002 00:01:34 -0000	1.5
  +++ JstlSqlTLV.java	17 Apr 2002 17:59:23 -0000	1.6
  @@ -170,21 +170,21 @@
                *   </c:forEach>
                *  </sql:query>
                */
  -            if ( (isTag(qn, PARAM) || isTag(qn, DATEPARAM)) 
  +            if ( (isSqlTag(ns, ln, PARAM) || isSqlTag(ns, ln, DATEPARAM)) 
                   && (queryDepths.empty() && updateDepths.empty()) ) {
                   fail(Resources.getMessage("SQL_PARAM_OUTSIDE_PARENT"));
               }
   
               // If we're in a <query>, record relevant state
  -            if (isTag(qn, QUERY)) {
  +            if (isSqlTag(ns, ln, QUERY)) {
                   queryDepths.push(new Integer(depth));
               }
               // If we're in a <update>, record relevant state
  -            if (isTag(qn, UPDATE)) {
  +            if (isSqlTag(ns, ln, UPDATE)) {
                   updateDepths.push(new Integer(depth));
               }
               // If we're in a <transaction>, record relevant state
  -            if (isTag(qn, TRANSACTION)) {
  +            if (isSqlTag(ns, ln, TRANSACTION)) {
                   transactionDepths.push(new Integer(depth));
               }
   
  @@ -192,7 +192,7 @@
   	    bodyIllegal = false;
   	    bodyNecessary = false;
   
  -            if (isTag(qn, QUERY) || isTag(qn, UPDATE)) {
  +            if (isSqlTag(ns, ln, QUERY) || isSqlTag(ns, ln, UPDATE)) {
                   if (!hasAttribute(a, SQL)) {
                       bodyNecessary = true;
                   }
  @@ -201,7 +201,7 @@
                   }
               }
   
  -            if (isTag(qn, DATEPARAM)) {
  +            if (isSqlTag(ns, ln, DATEPARAM)) {
                   bodyIllegal = true;
               }
   
  @@ -240,15 +240,15 @@
   	    bodyIllegal = false;	// reset: we've left the tag
   
               // update <query>-related state
  -            if (isTag(qn, QUERY)) {
  +            if (isSqlTag(ns, ln, QUERY)) {
                   queryDepths.pop();
               }
               // update <update>-related state
  -            if (isTag(qn, UPDATE)) {
  +            if (isSqlTag(ns, ln, UPDATE)) {
                   updateDepths.pop();
               }
               // update <update>-related state
  -            if (isTag(qn, TRANSACTION)) {
  +            if (isSqlTag(ns, ln, TRANSACTION)) {
                   transactionDepths.pop();
               }
   
  
  
  
  1.10      +8 -8      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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JstlXmlTLV.java	8 Apr 2002 19:15:17 -0000	1.9
  +++ JstlXmlTLV.java	17 Apr 2002 17:59:23 -0000	1.10
  @@ -194,7 +194,7 @@
   	    // check invariants for <choose>
   	    if (chooseChild()) {
   		// ensure <choose> has the right children
  -		if(!isTag(qn, WHEN) && !isTag(qn, OTHERWISE)) {
  +		if(!isXmlTag(ns, ln, WHEN) && !isXmlTag(ns, ln, OTHERWISE)) {
   		    fail(Resources.getMessage("TLV_ILLEGAL_CHILD_TAG",
   			prefix, CHOOSE, qn));
   		}
  @@ -204,7 +204,7 @@
   		   fail(Resources.getMessage("TLV_ILLEGAL_ORDER",
   			qn, prefix, OTHERWISE, CHOOSE));
   		}
  -		if (isTag(qn, OTHERWISE)) {
  +		if (isXmlTag(ns, ln, OTHERWISE)) {
   		    chooseHasOtherwise.pop();
   		    chooseHasOtherwise.push(new Boolean(true));
   		}
  @@ -215,7 +215,7 @@
   	    if (!transformWithSource.empty() &&
   		    topDepth(transformWithSource) == (depth - 1)) {
   		// only allow <param>
  -		if (!isTag(qn, PARAM))
  +		if (!isXmlTag(ns, ln, PARAM))
   		    fail(Resources.getMessage("TLV_ILLEGAL_BODY",
   			prefix + ":" + TRANSFORM));
   
  @@ -226,7 +226,7 @@
   	    // now, modify state
   
   	    // we're a choose, so record new choose-specific state
  -	    if (isTag(qn, CHOOSE)) {
  +	    if (isXmlTag(ns, ln, CHOOSE)) {
   		chooseDepths.push(new Integer(depth));
   		chooseHasOtherwise.push(new Boolean(false));
   	    }
  @@ -234,15 +234,15 @@
   	    // set up a check against illegal attribute/body combinations
   	    bodyIllegal = false;
   	    bodyNecessary = false;
  -	    if (isTag(qn, PARSE)) {
  +	    if (isXmlTag(ns, ln, PARSE)) {
   		if (hasAttribute(a, SOURCE))
   		    bodyIllegal = true;
  -	    } else if (isTag(qn, PARAM)) {
  +	    } else if (isXmlTag(ns, ln, PARAM)) {
   		if (hasAttribute(a, VALUE))
   		    bodyIllegal = true;
   		else
   		    bodyNecessary = true;
  -	    } else if (isTag(qn, TRANSFORM)) {
  +	    } else if (isXmlTag(ns, ln, TRANSFORM)) {
   		if (hasAttribute(a, SOURCE))
   		    transformWithSource.push(new Integer(depth));
   	    }
  @@ -298,7 +298,7 @@
   	    bodyIllegal = false;	// reset: we've left the tag
   
   	    // update <choose>-related state
  -	    if (isTag(qn, CHOOSE)) {
  +	    if (isXmlTag(ns, ln, CHOOSE)) {
   		chooseDepths.pop();
   		chooseHasOtherwise.pop();
   	    }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>