You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2005/03/02 21:56:03 UTC

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

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  Changes    Path
  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.java	22 Feb 2005 22:00:54 -0000	1.35.2.27
  +++ Generator.java	2 Mar 2005 20:56:02 -0000	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 -0000	1.4.2.3
  +++ JspUtil.java	2 Mar 2005 20:56:03 -0000	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,
  +     * as '$' is a legal Java Identifier character.
  +     * @param c A instance of java.lang.Class
  +     * @return  The canonical name of c.
  +     */
  +    public static String getCanonicalName(Class c) {
  +
  +        String binaryName = c.getName();
  +        c = c.getDeclaringClass();
  +
  +        if (c == null) {
  +            return binaryName;
  +        }
  +
  +        StringBuffer buf = new StringBuffer(binaryName);
  +        do {
  +            buf.setCharAt(c.getName().length(), '.');
  +            c = c.getDeclaringClass();
  +        } while ( c != null);
  +
  +        return buf.toString();
  +    }
  +
   }
   
   class MyEntityResolver implements EntityResolver {
  
  
  

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