-1. Remy, please reread JSP 2.0 spec, p 1-101,1-102. Bullet .2 of the Semantics section was added to allow for this kind of optimization. Bullet .5 and .6 will be executed ONLY IF the container choose not to issue translation errors.
-Kin-man > Date: Mon, 02 Feb 2004 18:18:01 +0000 > From: [EMAIL PROTECTED] > Subject: cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Generator.java > To: [EMAIL PROTECTED] > > remm 2004/02/02 10:18:01 > > Modified: jasper2/src/share/org/apache/jasper/compiler Generator.java > Log: > - Revert useBean optimization done by Kin-Man, as it seems to violate the > spec wording (which basically says that an error should occur at runtime if the class > is not a JavaBean). > - Bug 26507. > > Revision Changes Path > 1.217 +31 -35 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.jav a > > Index: Generator.java > =================================================================== > RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Gen erator.java,v > retrieving revision 1.216 > retrieving revision 1.217 > diff -u -r1.216 -r1.217 > --- Generator.java 31 Jan 2004 01:56:28 -0000 1.216 > +++ Generator.java 2 Feb 2004 18:18:00 -0000 1.217 > @@ -1261,41 +1261,37 @@ > className = > attributeValue(beanName, false, String.class); > } > - out.printil("try {"); > - out.pushIndent(); > - out.printin(name); > - out.print(" = ("); > - out.print(type); > - out.print(") java.beans.Beans.instantiate("); > - out.print("this.getClass().getClassLoader(), "); > - out.print(className); > - out.println(");"); > - out.popIndent(); > - /* > - * Note: Beans.instantiate throws ClassNotFoundException > - * if the bean class is abstract. > - */ > - out.printil("} catch (ClassNotFoundException exc) {"); > - out.pushIndent(); > - out.printil( > - "throw new InstantiationException(exc.getMessage());"); > - out.popIndent(); > - out.printil("} catch (Exception exc) {"); > - out.pushIndent(); > - out.printin("throw new ServletException("); > - out.print("\"Cannot create bean of class \" + "); > - out.print(className); > - out.println(", exc);"); > - out.popIndent(); > - out.printil("}"); // close of try > } else { > // Implies klass is not null > - // Generate codes to instantiate the bean class > - out.printin(name); > - out.print(" = new "); > - out.print(klass); > - out.println("();"); > + className = quote(klass); > } > + out.printil("try {"); > + out.pushIndent(); > + out.printin(name); > + out.print(" = ("); > + out.print(type); > + out.print(") java.beans.Beans.instantiate("); > + out.print("this.getClass().getClassLoader(), "); > + out.print(className); > + out.println(");"); > + out.popIndent(); > + /* > + * Note: Beans.instantiate throws ClassNotFoundException > + * if the bean class is abstract. > + */ > + out.printil("} catch (ClassNotFoundException exc) {"); > + out.pushIndent(); > + out.printil( > + "throw new InstantiationException(exc.getMessage());"); > + out.popIndent(); > + out.printil("} catch (Exception exc) {"); > + out.pushIndent(); > + out.printin("throw new ServletException("); > + out.print("\"Cannot create bean of class \" + "); > + out.print(className); > + out.println(", exc);"); > + out.popIndent(); > + out.printil("}"); // close of try > /* > * Set attribute for bean in the specified scope > */ > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]