luehe       2002/10/30 12:53:11

  Modified:    jasper2/src/share/org/apache/jasper/compiler
                        TagFileProcessor.java
               jasper2/src/share/org/apache/jasper/resources
                        messages.properties messages_es.properties
                        messages_ja.properties
  Log:
  Enforce restriction that it is illegal to have a variable.name-given
  equal to an attribute.name in the same tag file translation unit.
  
  Revision  Changes    Path
  1.35      +45 -10    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java
  
  Index: TagFileProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- TagFileProcessor.java     30 Oct 2002 17:41:22 -0000      1.34
  +++ TagFileProcessor.java     30 Oct 2002 20:53:11 -0000      1.35
  @@ -112,7 +112,7 @@
        };
   
        private static final JspUtil.ValidAttribute[] variableDirectiveAttrs = {
  -         new JspUtil.ValidAttribute("name-given"),
  +         new JspUtil.ValidAttribute("name-given", true),
            new JspUtil.ValidAttribute("variable-class"),
            new JspUtil.ValidAttribute("scope"),
            new JspUtil.ValidAttribute("declare"),
  @@ -131,9 +131,9 @@
           private String smallIcon = null;
           private String largeIcon = null;
           private boolean dynamicAttributes = false;
  -
  -        private Vector attributeVector = new Vector();
  -        private Vector variableVector = new Vector();
  +     
  +        private Vector attributeVector;
  +        private Vector variableVector;
   
           public TagFileDirectiveVisitor(Compiler compiler,
                                       TagLibraryInfo tagLibInfo,
  @@ -141,6 +141,8 @@
               err = compiler.getErrorDispatcher();
            this.tagLibInfo = tagLibInfo;
            this.name = name;
  +         attributeVector = new Vector();
  +         variableVector = new Vector();
           }
   
           public void visit(Node.TagDirective n) throws JasperException {
  @@ -233,6 +235,22 @@
                                                          scope));
           }
   
  +     /*
  +      * Returns the vector of attributes corresponding to attribute
  +      * directives.
  +      */
  +     public Vector getAttributesVector() {
  +         return attributeVector;
  +     }
  +
  +     /*
  +      * Returns the vector of variables corresponding to variable
  +      * directives.
  +      */        
  +     public Vector getVariablesVector() {
  +         return variableVector;
  +     }
  +
           public TagInfo getTagInfo() {
   
               if (name == null) {
  @@ -285,20 +303,37 @@
                                       TagLibraryInfo tagLibInfo)
                   throws JasperException {
   
  +     ErrorDispatcher err = pc.getCompiler().getErrorDispatcher();
  +
           Node.Nodes page = null;
        try {
            page = pc.parseTagFile(tagfile);
        } catch (FileNotFoundException e) {
  -         pc.getCompiler().getErrorDispatcher().jspError(
  -                                        "jsp.error.file.not.found", tagfile);
  +         err.jspError("jsp.error.file.not.found", tagfile);
        } catch (IOException e) {
  -         pc.getCompiler().getErrorDispatcher().jspError(
  -                                        "jsp.error.file.not.found", tagfile);
  +         err.jspError("jsp.error.file.not.found", tagfile);
        }
   
           TagFileDirectiveVisitor tagFileVisitor
            = new TagFileDirectiveVisitor(pc.getCompiler(), tagLibInfo, name);
           page.visit(tagFileVisitor);
  +
  +     /*
  +      * It is illegal to have a variable.name-given equal to an
  +      * attribute.name in the same tag file translation unit.
  +      */
  +     Iterator attrsIter = tagFileVisitor.getAttributesVector().iterator();
  +     while (attrsIter.hasNext()) {
  +         TagAttributeInfo attrInfo = (TagAttributeInfo) attrsIter.next();
  +         Iterator varsIter = tagFileVisitor.getVariablesVector().iterator();
  +         while (varsIter.hasNext()) {
  +             TagVariableInfo varInfo = (TagVariableInfo) varsIter.next();
  +             if (attrInfo.getName().equals(varInfo.getNameGiven())) {
  +                 err.jspError("jsp.error.tagfile.var_name_given_equals_attr_name",
  +                              tagfile, attrInfo.getName());
  +             }
  +         }
  +     }
   
           return tagFileVisitor.getTagInfo();
       }
  
  
  
  1.52      +2 -1      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- messages.properties       28 Oct 2002 22:01:34 -0000      1.51
  +++ messages.properties       30 Oct 2002 20:53:11 -0000      1.52
  @@ -301,3 +301,4 @@
   jsp.error.attribute.non_rt_with_expr=According to TLD, attribute {0} does not 
accept any expressions
   jsp.error.scripting.variable.missing_name=Unable to determine scripting variable 
name from attribute {0}
   jasper.error.emptybodycontent.nonempty=According to TLD, tag {0} must be empty, but 
is not
  +jsp.error.tagfile.var_name_given_equals_attr_name=In tag file {0}, the name-given 
attribute ({1}) of a variable directive equals the name attribute of an attribute 
directive
  
  
  
  1.19      +2 -1      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties
  
  Index: messages_es.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- messages_es.properties    28 Oct 2002 22:01:34 -0000      1.18
  +++ messages_es.properties    30 Oct 2002 20:53:11 -0000      1.19
  @@ -221,3 +221,4 @@
   jsp.error.attribute.non_rt_with_expr=
   jsp.error.scripting.variable.missing_name=
   jasper.error.emptybodycontent.nonempty=
  +jsp.error.tagfile.var_name_given_equals_attr_name=
  
  
  
  1.19      +2 -1      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties
  
  Index: messages_ja.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- messages_ja.properties    28 Oct 2002 22:01:34 -0000      1.18
  +++ messages_ja.properties    30 Oct 2002 20:53:11 -0000      1.19
  @@ -252,3 +252,4 @@
   jsp.error.attribute.non_rt_with_expr=
   jsp.error.scripting.variable.missing_name=
   jasper.error.emptybodycontent.nonempty=
  +jsp.error.tagfile.var_name_given_equals_attr_name=
  
  
  

--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>

Reply via email to