cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java

2005-03-02 Thread markt
markt   2005/03/02 12:56:03

  Modified:jasper2/src/share/org/apache/jasper/compiler Tag:
tomcat_4_branch Generator.java JspUtil.java
  Log:
  Port fix for 22867 tag handlers can't be inner/nested classes from TC5
   - TC4 port provided by Steven Parkes in bug 24586
  
  Revision  ChangesPath
  No   revision
  No   revision
  1.35.2.28 +14 -10
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.35.2.27
  retrieving revision 1.35.2.28
  diff -u -r1.35.2.27 -r1.35.2.28
  --- Generator.java22 Feb 2005 22:00:54 -  1.35.2.27
  +++ Generator.java2 Mar 2005 20:56:02 -   1.35.2.28
  @@ -648,7 +648,7 @@
   if (beanInfo.checkVariable(name)) {
   // Bean is defined using useBean, introspect at compile time
   Class bean = beanInfo.getBeanType(name);
  -String beanName = bean.getName();
  +String beanName = JspUtil.getCanonicalName(bean);
   java.lang.reflect.Method meth =
   JspRuntimeLibrary.getReadMethod(bean, property);
   String methodName = meth.getName();
  @@ -1293,21 +1293,23 @@
   declareScriptingVars(n, VariableInfo.AT_BEGIN);
   saveScriptingVars(n, VariableInfo.AT_BEGIN);
   
  -out.printin(tagHandlerClass.getName());
  +String tagHandlerClassName =
  +JspUtil.getCanonicalName(tagHandlerClass);
  +out.printin(tagHandlerClassName);
   out.print(" ");
   out.print(tagHandlerVar);
   out.print(" = ");
   if (ctxt.getOptions().isPoolingEnabled()) {
   out.print("(");
  -out.print(tagHandlerClass.getName());
  +out.print(tagHandlerClassName);
   out.print(") ");
   out.print(n.getTagHandlerPoolName());
   out.print(".get(");
  -out.print(tagHandlerClass.getName());
  +out.print(tagHandlerClassName);
   out.println(".class);");
   } else {
   out.print("new ");
  -out.print(tagHandlerClass.getName());
  +out.print(tagHandlerClassName);
   out.println("();");
   }
   
  @@ -1750,11 +1752,12 @@
   throws JasperException {
   
   if (propEditorClass != null) {
  -return "(" + c.getName()
  +String className = JspUtil.getCanonicalName(c);
  +return "(" + className
   + 
")JspRuntimeLibrary.getValueFromBeanInfoPropertyEditor("
  -+ c.getName() + ".class, \"" + attrName + "\", "
  ++ className + ".class, \"" + attrName + "\", "
   + quote(s) + ", "
  -+ propEditorClass.getName() + ".class)";
  ++ JspUtil.getCanonicalName(propEditorClass) + ".class)";
   } else if (c == String.class) {
   return quote(s);
   } else if (c == boolean.class) {
  @@ -1808,9 +1811,10 @@
   } else if (c == Object.class) {
   return "new String(" + quote(s) + ")";
   } else {
  -return "(" + c.getName()
  +String className = JspUtil.getCanonicalName(c);
  +return "(" + className
   + ")JspRuntimeLibrary.getValueFromPropertyEditorManager("
  -+ c.getName() + ".class, \"" + attrName + "\", "
  ++ className + ".class, \"" + attrName + "\", "
   + quote(s) + ")";
   }
   }   
  
  
  
  1.4.2.4   +29 -0 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java,v
  retrieving revision 1.4.2.3
  retrieving revision 1.4.2.4
  diff -u -r1.4.2.3 -r1.4.2.4
  --- JspUtil.java  25 Aug 2004 20:53:31 -  1.4.2.3
  +++ JspUtil.java  2 Mar 2005 20:56:03 -   1.4.2.4
  @@ -423,6 +423,35 @@
   }
   return b;
   }
  +
  +// javac -classpath 
~mint/tomcat/common/lib/ant.jar:~mint/tomcat/common/endorsed/xml-apis.jar:~mint/tomcat/common/lib/servlet.jar
 `find . -name \*.java ` 
  +
  +
  +/**
  + * Compute the canonical name from a Class instance.  Note that a
  + * simple replacment of '$' with '.' of a binary name would not work,

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java

2004-06-10 Thread kinman
kinman  2004/06/10 17:29:57

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspUtil.java
  Log:
  - If the value of the "type" attribute of the attribute directive
is an array, allow it to be specified as "[L;"
  
  Revision  ChangesPath
  1.234 +3 -3  
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.233
  retrieving revision 1.234
  diff -u -r1.233 -r1.234
  --- Generator.java10 Jun 2004 21:17:28 -  1.233
  +++ Generator.java11 Jun 2004 00:29:56 -  1.234
  @@ -3444,7 +3444,7 @@
   if (attrInfos[i].isFragment()) {
   out.print("javax.servlet.jsp.tagext.JspFragment ");
   } else {
  -out.print(attrInfos[i].getTypeName());
  +out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
   out.print(" ");
   }
   out.print(attrInfos[i].getName());
  @@ -3460,7 +3460,7 @@
   if (attrInfos[i].isFragment()) {
   out.print("javax.servlet.jsp.tagext.JspFragment ");
   } else {
  -out.print(attrInfos[i].getTypeName());
  +out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
   out.print(" ");
   }
   out.print(toGetterMethod(attrInfos[i].getName()));
  @@ -3480,7 +3480,7 @@
   out.print("(javax.servlet.jsp.tagext.JspFragment ");
   } else {
   out.print("(");
  -out.print(attrInfos[i].getTypeName());
  +out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
   out.print(" ");
   }
   out.print(attrInfos[i].getName());
  
  
  
  1.49  +1 -1  
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- JspUtil.java  19 Apr 2004 21:10:19 -  1.48
  +++ JspUtil.java  11 Jun 2004 00:29:56 -  1.49
  @@ -1047,7 +1047,7 @@
* the element type can be one of ZBCDFIJS or L;
* It is converted into forms that can be understood by javac.
*/
  -private static String toJavaSourceType(String type) {
  +public static String toJavaSourceType(String type) {
   
if (type.charAt(0) != '[') {
return type;
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java

2004-04-19 Thread kinman
kinman  2004/04/19 14:10:19

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspUtil.java
  Log:
  - Fix 28380: Javac error with ':' and '.' in attribute names.
  
  Revision  ChangesPath
  1.232 +7 -29 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.231
  retrieving revision 1.232
  diff -u -r1.231 -r1.232
  --- Generator.java5 Apr 2004 16:07:41 -   1.231
  +++ Generator.java19 Apr 2004 21:10:19 -  1.232
  @@ -254,18 +254,6 @@
   boolean hasEmptyBody) {
   String poolName = null;
   
  -if (prefix.indexOf('-') >= 0)
  -prefix = JspUtil.replace(prefix, '-', "$1");
  -if (prefix.indexOf('.') >= 0)
  -prefix = JspUtil.replace(prefix, '.', "$2");
  -
  -if (shortName.indexOf('-') >= 0)
  -shortName = JspUtil.replace(shortName, '-', "$1");
  -if (shortName.indexOf('.') >= 0)
  -shortName = JspUtil.replace(shortName, '.', "$2");
  -if (shortName.indexOf(':') >= 0)
  -shortName = JspUtil.replace(shortName, ':', "$3");
  -
   poolName = "_jspx_tagPool_" + prefix + "_" + shortName;
   if (attrs != null) {
   String[] attrNames = new String[attrs.getLength()];
  @@ -280,7 +268,7 @@
   if (hasEmptyBody) {
   poolName = poolName + "_nobody";
   }
  -return poolName;
  +return JspUtil.makeXmlJavaIdentifier(poolName);
   }
   }
   
  @@ -2617,37 +2605,27 @@
   
   /*
* Creates a tag variable name by concatenating the given prefix and
  - * shortName and replacing '-' with "$1", '.' with "$2", and ':' with
  - * "$3".
  + * shortName and endcoded to make the resultant string a valid Java
  + * Identifier.
*/
   private String createTagVarName(
   String fullName,
   String prefix,
   String shortName) {
  -if (prefix.indexOf('-') >= 0)
  -prefix = JspUtil.replace(prefix, '-', "$1");
  -if (prefix.indexOf('.') >= 0)
  -prefix = JspUtil.replace(prefix, '.', "$2");
  -
  -if (shortName.indexOf('-') >= 0)
  -shortName = JspUtil.replace(shortName, '-', "$1");
  -if (shortName.indexOf('.') >= 0)
  -shortName = JspUtil.replace(shortName, '.', "$2");
  -if (shortName.indexOf(':') >= 0)
  -shortName = JspUtil.replace(shortName, ':', "$3");
   
  +String varName;
   synchronized (tagVarNumbers) {
  -String varName = prefix + "_" + shortName + "_";
  +varName = prefix + "_" + shortName + "_";
   if (tagVarNumbers.get(fullName) != null) {
   Integer i = (Integer)tagVarNumbers.get(fullName);
   varName = varName + i.intValue();
   tagVarNumbers.put(fullName, new Integer(i.intValue() + 1));
  -return varName;
   } else {
   tagVarNumbers.put(fullName, new Integer(1));
  -return varName + "0";
  +varName = varName + "0";
   }
   }
  +return JspUtil.makeXmlJavaIdentifier(varName);
   }
   
   private String evaluateAttribute(
  
  
  
  1.48  +21 -0 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- JspUtil.java  17 Mar 2004 19:23:03 -  1.47
  +++ JspUtil.java  19 Apr 2004 21:10:19 -  1.48
  @@ -1003,6 +1003,27 @@
   return false;
   }
   
  +/**
  + * Converts the given Xml name to a legal Java identifier.  This is
  + * slightly more efficient than makeJavaIdentifier in that we only need
  + * to worry about '.', '-', and ':' in the string.  We also assume that
  + * the resultant string is further concatenated with some prefix string
  + * so that we don't have to worry about it being a Java key word.
  + *
  + * @param name Identifier to convert
  + *
  + * @return Legal Java identifier corresponding to the give

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java

2003-09-19 Thread kinman
kinman  2003/09/19 11:30:10

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspUtil.java
  Log:
  - When a tag handler class is an inner class, it is specified in the TLD
in binary form (Outer$Inner).  It needs to be converted to canonical
form (Outer.Inner) when generating Java files.
  
  Revision  ChangesPath
  1.210 +21 -15
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.209
  retrieving revision 1.210
  diff -u -r1.209 -r1.210
  --- Generator.java18 Sep 2003 23:12:39 -  1.209
  +++ Generator.java19 Sep 2003 18:30:09 -  1.210
  @@ -1048,7 +1048,7 @@
   if (beanInfo.checkVariable(name)) {
   // Bean is defined using useBean, introspect at compile time
   Class bean = beanInfo.getBeanType(name);
  -String beanName = bean.getName();
  +String beanName = JspUtil.getCanonicalName(bean);
   java.lang.reflect.Method meth =
   JspRuntimeLibrary.getReadMethod(bean, property);
   String methodName = meth.getName();
  @@ -2121,21 +2121,23 @@
   declareScriptingVars(n, VariableInfo.AT_BEGIN);
   saveScriptingVars(n, VariableInfo.AT_BEGIN);
   
  -out.printin(tagHandlerClass.getName());
  +String tagHandlerClassName =
  +JspUtil.getCanonicalName(tagHandlerClass);
  +out.printin(tagHandlerClassName);
   out.print(" ");
   out.print(tagHandlerVar);
   out.print(" = ");
   if (isPoolingEnabled) {
   out.print("(");
  -out.print(tagHandlerClass.getName());
  +out.print(tagHandlerClassName);
   out.print(") ");
   out.print(n.getTagHandlerPoolName());
   out.print(".get(");
  -out.print(tagHandlerClass.getName());
  +out.print(tagHandlerClassName);
   out.println(".class);");
   } else {
   out.print("new ");
  -out.print(tagHandlerClass.getName());
  +out.print(tagHandlerClassName);
   out.println("();");
   }
   
  @@ -2333,12 +2335,14 @@
   declareScriptingVars(n, VariableInfo.AT_BEGIN);
   saveScriptingVars(n, VariableInfo.AT_BEGIN);
   
  -out.printin(tagHandlerClass.getName());
  +String tagHandlerClassName =
  +JspUtil.getCanonicalName(tagHandlerClass);
  +out.printin(tagHandlerClassName);
   out.print(" ");
   out.print(tagHandlerVar);
   out.print(" = ");
   out.print("new ");
  -out.print(tagHandlerClass.getName());
  +out.print(tagHandlerClassName);
   out.println("();");
   
   generateSetters(n, tagHandlerVar, handlerInfo, true);
  @@ -2853,16 +2857,17 @@
   }
   
   if (propEditorClass != null) {
  +String className = JspUtil.getCanonicalName(c);
   return "("
  -+ c.getName()
  ++ className
   + 
")org.apache.jasper.runtime.JspRuntimeLibrary.getValueFromBeanInfoPropertyEditor("
  -+ c.getName()
  ++ className
   + ".class, \""
   + attrName
   + "\", "
   + quoted
   + ", "
  -+ propEditorClass.getName()
  ++ JspUtil.getCanonicalName(propEditorClass)
   + ".class)";
   } else if (c == String.class) {
   return quoted;
  @@ -2901,10 +2906,11 @@
   } else if (c == Object.class) {
   return "new String(" + quoted + ")";
   } else {
  +String className = JspUtil.getCanonicalName(c);
   return "("
  -+ c.getName()
  ++ className
   + 
")org.apache.jasper.runtime.JspRuntimeLibrary.getValueFromPropertyEditorManager("
  -+ c.getName()
  ++ className
   + ".class, \""
   + attrName
   + "\", "
  
  
  
  1.45  +28 -3 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/s

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java SmapStratum.java SmapUtil.java

2003-08-14 Thread remm
remm2003/08/09 12:19:37

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspUtil.java SmapStratum.java SmapUtil.java
  Log:
  - Bug 2006: Invalid SMAP line entries when running with mappedfile=true.
  - Submitted by Eric Carmichael (like the previous patch).
  
  Revision  ChangesPath
  1.194 +5 -7  
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.193
  retrieving revision 1.194
  diff -u -r1.193 -r1.194
  --- Generator.java3 Aug 2003 09:07:47 -   1.193
  +++ Generator.java9 Aug 2003 19:19:37 -   1.194
  @@ -1700,8 +1700,6 @@
}
}
   
  - private static final int CHUNKSIZE = 1024;
  -
public void visit(Node.TemplateText n) throws JasperException {
   
String text = n.getText();
  @@ -1711,7 +1709,7 @@
out.printin();
StringBuffer sb = new StringBuffer("out.write(\"");
int initLength = sb.length();
  - int count = CHUNKSIZE;
  + int count = JspUtil.CHUNKSIZE;
for (int i = 0 ; i < text.length() ; i++) {
char ch = text.charAt(i);
--count;
  @@ -1736,7 +1734,7 @@
   out.printin();
   }
sb.setLength(initLength);
  - count = CHUNKSIZE;
  + count = JspUtil.CHUNKSIZE;
}
break;
case '\t':  // Not sure we need this
  
  
  
  1.42  +5 -3  
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- JspUtil.java  8 Aug 2003 10:22:23 -   1.41
  +++ JspUtil.java  9 Aug 2003 19:19:37 -   1.42
  @@ -117,6 +117,8 @@
   "this", "throws", "transient", "try", "void",
   "volatile", "while" };
   
  +public static final int CHUNKSIZE = 1024;
  +
   public static char[] removeQuotes(char []chars) {
   CharArrayWriter caw = new CharArrayWriter();
   for (int i = 0; i < chars.length; i++) {
  
  
  
  1.6   +38 -0 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/SmapStratum.java
  
  Index: SmapStratum.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/SmapStratum.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SmapStratum.java  31 Jul 2003 16:56:20 -  1.5
  +++ SmapStratum.java  9 Aug 2003 19:19:37 -   1.6
  @@ -205,6 +205,44 @@
   }

   /**
  + * Combines consecutive LineInfos wherever possible
  + */
  +public void optimizeLineSection() {
  +
  +//Incorporate each LineInfo into the previous LineInfo's 
  +//outputLineIncrement, if possible
  +int i=0;
  +while (i < lineData.size()-1) {
  +LineInfo li = (LineInfo)lineData.get(i);
  +LineInfo liNext = (LineInfo)lineData.get(i+1);
  +if (liNext.inputStartLine == li.inputStartLine
  + && liNext.inputLineCount==1
  +  && li.inputLineCount==1) {
  +li.setOutputLineIncrement(liNext.outputStartLine - 
li.outputStartLine + liNext.outputLineIncrement);
  +lineData.remove(i+1);
  +} else {
  +i++; 
  +}
  +}
  +
  +//Incorporate each LineInfo into the previous LineInfo's
  +//inputLineCount, if possible
  +i=0;
  +while (i < lineData.size()-1) {
  +LineInfo li = (LineInfo)lineData.get(i);
  +LineInfo liNext = (LineInfo)lineData.get(i+1);
  +if (liNext.inputStartLine == li.inputStartLine + li.inputLineCount
  + && liNext.outputLineIncrement == li.outputLineIncrement
  +  && liNext.outputStartLine == li.outputStartLine + 
li.inputLineCount*li.outputLineIncrement) {
  +  li.setInputLineCount(li.inputLineCount + liNext.inputLineCount);
  +  lineData.remove(i+1);
  + } else {
  + i++;
  + }
  +}
  +}
  +
  +/**
* Adds complete information about a simple line mapping.  Specify
* all the fields in this method; the back-end machinery takes care
* of printi

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java Validator.java

2002-09-19 Thread luehe

luehe   2002/09/19 16:21:40

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspUtil.java Validator.java
  Log:
  Fixed 12718: A variable scoped within a fragment in a tag file is
   always expsed as a string
  
  Revision  ChangesPath
  1.102 +67 -10
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.101
  retrieving revision 1.102
  diff -u -r1.101 -r1.102
  --- Generator.java13 Sep 2002 00:29:48 -  1.101
  +++ Generator.java19 Sep 2002 23:21:39 -  1.102
  @@ -587,7 +587,7 @@
   
   JspUtil.FunctionSignature functionSignature = 
   new JspUtil.FunctionSignature( fnSignature, 
  -tli.getShortName(), err );
  +tli.getShortName(), err, ctxt.getClassLoader() );
   out.print( quote( functionSignature.getMethodName() ) );
   out.print(", ");
   Class[] args = functionSignature.getParameterTypes();
  @@ -701,6 +701,7 @@
private FragmentHelperClass fragmentHelperClass;
private int methodNesting;
private TagInfo tagInfo;
  + private ClassLoader loader;
   
/**
 * Constructor.
  @@ -709,11 +710,13 @@
   ServletWriter out, 
   MethodsBuffer methodsBuffer, 
   FragmentHelperClass fragmentHelperClass,
  +ClassLoader loader,
   TagInfo tagInfo) {
this.isTagFile = isTagFile;
this.out = out;
this.methodsBuffer = methodsBuffer;
this.fragmentHelperClass = fragmentHelperClass;
  + this.loader = loader;
this.tagInfo = tagInfo;
methodNesting = 0;
handlerInfos = new Hashtable();
  @@ -1831,21 +1834,66 @@
 */
class ParamVisitor extends Node.Visitor {
   
  + // The name of the fragment to which the  applies
  + private String fragName;
  +
  + public ParamVisitor(String fragName) {
  + this.fragName = fragName;
  + }
  +
   public void visit(Node.ParamAction n) throws JasperException {
out.printin("_jspx_params.put(");
out.print(quote(n.getTextAttribute("name")));
out.print(", ");
out.print(attributeValue(n.getValue(), false,
  -  String.class, "null"));
  +  getParamClass(n), "null"));
out.println(");");
}
  +
  + /*
  +  * Checks to see if the given  matches a tag file
  +  * variable scoped to the same fragment as the enclosing
  +  * . If a match is found, the class specified in
  +  * the variable directive's 'variable-class' attribute (if 
  +  * present) is loaded and returned.
  +  */
  + private Class getParamClass(Node.ParamAction n)
  + throws JasperException {
  +
  + Class clazz = String.class;
  +
  + TagVariableInfo[] tagVars = tagInfo.getTagVariableInfos();
  + if (tagVars != null) {
  + String paramName = n.getTextAttribute("name");
  + for (int i=0; iClass object by appending ".class" to it (e.g., "int.class").
*/
  -public static Class toClass(String type) throws ClassNotFoundException {
  +public static Class toClass(String type, ClassLoader loader)
  + throws ClassNotFoundException {
if ("boolean".equals(type))
return boolean.class;
else if ("char".equals(type))
  @@ -556,7 +557,7 @@
else if ("double".equals(type))
return double.class;
else
  - return Class.forName(type);
  + return loader.loadClass(type);
   }
   
   /**
  @@ -715,7 +716,7 @@
* signature.
*/
   public FunctionSignature( String signature, String tagName,
  -ErrorDispatcher err )
  +ErrorDispatcher err, ClassLoader loader )
   throws JasperException
   {
   try {
  @@ -763,7 +764,7 @@
   tagName, this.methodName ) );
   }
   
  -parameterTypes.add(toClass(argType));
  +parameterTypes.add(toClass(argType, loader));
   
   String c

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java

2002-08-01 Thread luehe

luehe   2002/08/01 11:47:28

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspUtil.java
  Log:
  more compilation error fixes for generated tag handler file
  
  Revision  ChangesPath
  1.55  +33 -27
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- Generator.java1 Aug 2002 02:12:05 -   1.54
  +++ Generator.java1 Aug 2002 18:47:28 -   1.55
  @@ -407,10 +407,8 @@
   out.println();
   }
   
  -// Static data for EL function maps:
  +// Static data for EL function and prefix maps:
   generateELFunctionMap();
  -
  -// Static data for EL function maps:
generatePrefixMap();
   
// Class variable declarations
  @@ -736,6 +734,7 @@
private String parent;
private String simpleTagHandlerVar;
private boolean isSimpleTagHandler;
  + private boolean isTagFile;
private ServletWriter out;
private MethodsBuffer methodsBuffer;
private FragmentHelperClass fragmentHelperClass;
  @@ -745,10 +744,12 @@
/**
 * Constructor.
 */
  - public GenerateVisitor(ServletWriter out, 
  + public GenerateVisitor(boolean isTagFile,
  +ServletWriter out, 
   MethodsBuffer methodsBuffer, 
   FragmentHelperClass fragmentHelperClass,
   TagInfo tagInfo) {
  + this.isTagFile = isTagFile;
this.out = out;
this.methodsBuffer = methodsBuffer;
this.fragmentHelperClass = fragmentHelperClass;
  @@ -783,9 +784,9 @@
   
   if (attr.isExpression() || attr.isELInterpreterInput()) {
if (attr.isELInterpreterInput()) {
  - v = JspUtil.interpreterCall( attr.getValue(), 
  -expectedType, "_jspx_prefix_map", "_jspx_fnmap",
  - defaultPrefix );
  + v = JspUtil.interpreterCall(this.isTagFile,
  + attr.getValue(), expectedType, "_jspx_prefix_map",
  + "_jspx_fnmap", defaultPrefix );
}
if (encode) {
return "java.net.URLEncoder.encode(" + v + ")";
  @@ -861,9 +862,9 @@
   if ( true /*isELEnabled*/ ) {
   out.printil(
   "out.write("
  -  + JspUtil.interpreterCall(
  -  "${" + new String(n.getText()) + "}", String.class,
  -  "_jspx_prefix_map", "_jspx_fnmap", "null" )
  + + JspUtil.interpreterCall(this.isTagFile,
  +"${" + new String(n.getText()) + "}", String.class,
  + "_jspx_prefix_map", "_jspx_fnmap", "null" )
   + ");");
   } else {
   out.printil("out.write(" +
  @@ -2392,8 +2393,8 @@
// Do nothing
} else if (attrs[i].isELInterpreterInput()) {
   // run attrValue through the expression interpreter
  -attrValue = JspUtil.interpreterCall( attrValue,
  -c[0], "_jspx_prefix_map", "_jspx_fnmap",
  +attrValue = JspUtil.interpreterCall(this.isTagFile,
  +attrValue, c[0], "_jspx_prefix_map", "_jspx_fnmap",
   n.getPrefix() );
   } else {
attrValue = convertString(
  @@ -2729,20 +2730,21 @@
if (gen.ctxt.isTagFile()) {
TagInfo tagInfo = gen.ctxt.getTagInfo();
gen.generateTagHandlerPreamble(tagInfo);
  - page.visit(gen.new GenerateVisitor(out, gen.methodsBuffer, null,
  -tagInfo));
  + page.visit(gen.new GenerateVisitor(gen.ctxt.isTagFile(), out,
  +gen.methodsBuffer, null,
  +tagInfo));
gen.generateTagHandlerPostamble();
  - return;
  - }
  -
  - if (gen.ctxt.getOptions().isPoolingEnabled()) {
  - gen.compileTagHandlerPoolList(page);
  + } else {
  + if (gen.ctxt.getOptions().isPoolingEnabled()) {
  + gen.compileTagHandlerPoolList(page);
  + }
  + gen.generatePreamble(page);
  + gen.fragmentHelperClass.generatePreamble();
  + page.visit(gen.new GenerateVisitor(gen.ctxt.isTagFile(), out,
  +gen.methodsBuffer, 
  + 

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java JspUtil.java Node.java

2002-06-07 Thread kinman

kinman  2002/06/07 17:14:35

  Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java
JspUtil.java Node.java
  Log:
  Applied the patch supplied by Jan Luehe, to implement tag pooling/reuse
  based on a scheme Jan and I discussed.  Jan's note:
  
  Tag pooling/reuse is implemented as follows:
  
  - Every custom tag is assigned a tag handler pool, based on its full tag name
  and attribute set.
  
  - Tag handler pools are declared as servlet instance variables, so
  that they can be shared across page invocations.
  
  - Tag handler pools are instantiated with a
  yet-to-be-made-configurable capacity at servlet construction time
  (current default capacity is 5).
  
  - When a tag handler is required, it is retrieved from the appropriate
  tag handler pool. If the pool is empty, a new tag handler is instantiated and
  returned.
  
  - When a tag handler is no longer needed, it is returned to the appropriate
  pool. It is added to the pool, unless the pool has already reached its
  capacity, in which case the tag handler's release() method is called.
  
  - The servlet's destroy() method enumerates the servlet's tag handler
  pools and calls the release() method of every available tag handler.
  
  Outstanding issues:
  - Make tag handler pool capacity configurable.
  - Optimize tag reuse in the body of iteration tags.
  
  Revision  ChangesPath
  1.18  +154 -44   
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Generator.java5 Jun 2002 22:01:33 -   1.17
  +++ Generator.java8 Jun 2002 00:14:35 -   1.18
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
 1.17 2002/06/05 22:01:33 kinman Exp $
  - * $Revision: 1.17 $
  - * $Date: 2002/06/05 22:01:33 $
  + * $Header: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
 1.18 2002/06/08 00:14:35 kinman Exp $
  + * $Revision: 1.18 $
  + * $Date: 2002/06/08 00:14:35 $
*
* 
* 
  @@ -96,6 +96,7 @@
   private boolean breakAtLF;
   private PageInfo pageInfo;
   private int maxTagNesting;
  +private Vector tagHandlerPoolNames;
   
   /**
* @param s the input string
  @@ -158,6 +159,99 @@
   }
   
   /**
  + * Compiles list of tag handler pool names.
  + */
  +private void compileTagHandlerPoolList(Node.Nodes page)
  + throws JasperException {
  +
  + class TagHandlerPoolVisitor extends Node.Visitor {
  +
  + private Vector names;
  +
  + /*
  +  * Constructor
  +  *
  +  * @param v Vector of tag handler pool names to populate
  +  */
  + TagHandlerPoolVisitor(Vector v) {
  + names = v;
  + }
  +
  + /*
  +  * Gets the name of the tag handler pool for the given custom tag
  +  * and adds it to the list of tag handler pool names unless it is
  +  * already contained in it.
  +  */
  + public void visit(Node.CustomTag n) throws JasperException {
  + 
  + String name = createTagHandlerPoolName(n.getPrefix(),
  + n.getShortName(),
  + n.getAttributes());
  + n.setTagHandlerPoolName(name);
  + if (!names.contains(name)) {
  + names.add(name);
  + }
  + visitBody(n);
  + }
  +
  + /*
  +  * Creates the name of the tag handler pool whose tag handlers may
  +  * be (re)used to service this action.
  +  *
  +  * @return The name of the tag handler pool
  +  */
  + private String createTagHandlerPoolName(String prefix,
  + String shortName,
  + Attributes attrs) {
  + String poolName = null;
  +
  + if (prefix.indexOf('-') >= 0)
  + prefix = JspUtil.replace(prefix, '-', "$1");
  + if (prefix.indexOf('.') >= 0)
  + prefix = JspUtil.replace(prefix, '.', "$2");
  +
  + if (shortName.indexOf('-') >= 0)
  + shortName = JspUtil.replace(shortName, '-', "$1");
  + if (shortName.indexOf('.') >= 0)
  + shortName = JspUtil.replace(shortName, '.', "$2");
  + if (shortName.indexOf(':') >= 0)
  + shortName = JspUtil.replace