Your test for bad beans is much weaker than what it is now.  For instance,
you do not catch the case where the bean class is abstract.

However, I am sympathetic to your view on this.  If I can be convinced that
we have covered all checks that we can do without too much trouble, I'll
fix Jasper.

-Kin-man

> Date: Tue, 30 Mar 2004 08:30:05 -0600
> From: Jess Holle <[EMAIL PROTECTED]>
> Subject: Re: Tomcat 5.0.20 Issue
> To: Tomcat Developers List <[EMAIL PROTECTED]>
> X-OriginalArrivalTime: 30 Mar 2004 14:30:06.0040 (UTC) 
FILETIME=[7EEF4580:01C41663]
> 
> Kin-Man Chung wrote:
> 
> >I think your only valid point is the one about the need to make
> >errorOnUseBeanInvalidClassAttribute be switchable from Jspc main,
> >but we are not bundling jspc scripts anymore, so I didn't feel there
> >is a need for it.  Anyway, its value can be set with an ant task.
> >
> >Otherwise, Jasper behaves the same as before when
> >errorOnUseBeanInvalidClassAttribute is set to false.  Well, maybe it
> >take more time to compile, but that's a compile-time vs. runt-time
> >tradeoff that all compilers make.
> >
> >The ideas behind the fix, both in the Jasper and the JSP 2.0 spec, is
> >to allow the Jasper to generate faster code and to catch as much
> >errors as possible at compile time.  For the embedded compilations, the
> >comile environment is the same as the runitme (request time) environment,
> >so there is no problem.  For Jspc compilations, you'll just need to make
> >sure that they are the same, otherwise you'll need to set
> >errorOnUseBeanInvalidClassAttribute to false there.
> >  
> >
> I'm not arguing with the overall intent of your change.  Rather I 
> believe that calling the constructor during compilation is wasteful and 
> improper as the environment *can* differ between compilation and 
> runtime.  Also, the fact that a failure to compile in this fashion 
> generates a partial Java source means that once a compilation fails due 
> to an environmental issue it will continue to fail even when the 
> environment is corrected (e.g. when another server comes back up).  
> That's certainly not appropriate.
> 
> >If you have ideas about how to modify Generator that works better, please
> >submit a patch, and I'll see if it can be incorporated.
> >  
> >
> I must profess ignorance as to how to submit an official patch (e.g. how 
> to generate one), but here's a diff with Generator.java version 1.230 
> from CVS of what I'm suggesting:
> 
>     22a23
>      > *import java.lang.reflect.Constructor;*
>     1224c1225,1226
>     <                         bean.newInstance();
>     ---
>      >                         // Next line will throw exception if
>     public no-args constructor cannot be found
>      >                         *Constructor  constructor =
>     bean.getConstructor( new Class[] {} );
>     *
> 
> Essentially, I'm suggesting we check for the existence of the default 
> constructor, but don't call it.  That takes the same amount of real code 
> (2 more lines thanks to my import and gratuitous comment) and avoids (1) 
> actually constructing the bean during compilation and (2) making any 
> unnecessary assumptions about compilation vs. runtime environmental 
> conditions.
> 
> Applying this diff to Generator.java addresses my issue and I believe is 
> an overall improvement and better aligned with the JSP specification.  I 
> would greatly appreciate it if this could be incorporated into the 
> Jasper/Tomcat source stream.
> 
> --
> Jess Holle
> [EMAIL PROTECTED]
> 


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

Reply via email to