|
From: Rod J. <rod...@in...> - 2004-01-02 18:13:10
|
I don't object to making more methods non-final, as people do ask for thi=
s.
However, in general I think there are better extension mechanisms than
overriding methods in Spring in many cases. I don't particularly like
overriding concrete methods as a means of extensibility.
Why would you want to subclass JdbcTemplate?
Why would you override JdbcDaoSupport's methods?
I'm not being sarcastic, I'm just curious...
Regards,
Rod
----- Original Message -----=20
From: "Michael Young" <sp...@on...>
To: <spr...@li...>
Sent: Friday, January 02, 2004 5:42 PM
Subject: Re: [Springframework-developer] Re: Final methods in SqlQuery
Juergen,
Can you do the same for other classes as well? Classes such as
JdbcTemplate and JdbcDaoSupport. Someone also mentioned the
abstract wizard form controller as well. See messages previously
posted either here or in users.
Thanks! /Michael.
On Friday, Jan-02-2004 02:45 AM (PST) jue...@we... (j=FCrg=
en
h=F6ller [werk3AT]) wrote:
> This sounds plausible to me. I'll look into turning appropriate methods
non-final today, if noone objects.
>
> The original rationale behind the final methods is to offer clear
extension points: Subclassers should know which methods are intended for
overriding and which are not, avoiding confusion. But I agree that this
doesn't work for cases that the framework developers didn't expect, so it=
's
probably better to not use final for methods where there is no clear gene=
ral
extension hook. I've already applied the same principle in the bean facto=
ry
implementation hierarchy.
>
> Juergen
>
>
> ________________________________
>
> Von: spr...@li... im Auftrag v=
on
David Heimann
> Gesendet: Fr 02.01.2004 02:24
> An: spr...@li...
> Betreff: [Springframework-developer] Re: Final methods in SqlQuery
>
>
>
> Ken and developers,
>
> I have a business rule in my system that all the data be
> stored in upper case in the database. This sugests the
> following design:
>
> 1)This is a business rule and so should be in the model
> layer rather than the presentation layer
>
> 2)The code to upper case the data should be centralized.
> Requiring each developer to upper case the data before
> calling the execute or update methods duplicates code and
> is error prone. (the PetClinic sample has around 12
> execute or update calls, each of which would need to be
> prefaced by upper casing code)
>
> 3)This suggests a design where I extend SqlUpdate and
> SqlQuery and override the SqlUpdate.update and
> SqlQuery.execute methods, for example
>
> public abstract SqlQueryUpper extends SqlQuery
> {
> public List execute(Object[] parameters, Map context)
> throws DataAccessException {
> //upper case string parameters
> for(int i =3D 0;i<parameters.length;i++)
> {
> Object p =3D parameters[i];
> if(p instanceof java.lang.String)
> {
> parameters[i] =3D p.toUpper();
> }
> }
> return super.execute(parameters, context);
> }
> }
>
> Of course, I could create my own method with a different
> name such as
> ...
> public List executeUpper(Object[] parameters, Map context)
> throws DataAccessException
> {
> (same as above)
> }
>
> But if I do that, then I
> 1)Still have the original SqlQuery.execute method out
> there which no one should use.
> 2)Do not have all the other signatures available such as
> SqlQuery.execute(int), SqlQuery.execute(String) etc because
> they all still go through the original execute method.
>
> Finally, my problem is an example of something not included
> or anticipated by the developers of the Spring Framework.
> There is no built in Spring 'auto-upper' option nor should
> there be. Putting final on methods stops me from adding it
> myself, making the framework unextendable in this area.
> IMHO final methods should be few and far between in an
> extensible framework and I do not think they are called for
> here.
>
> Sincerely,
>
> David Heimann
>
> >David,
> >
> > I don't understand why you think it would be nice to
> ***override*** it.
> > The execute method does all the IOC hard stuff for you.
> If you override
> > it, you have to do this yourself, adding unnecessary
> duplication. That's
> > why it's final. The same goes for SqlUpdate.update. In
> your example, why
> > not simply manipulate the parameters to your heart's
> content before
> > passing them to the execute method ?
> >
> > Ken
> >
> > Heimann, David X - San Mateo, CA wrote:
> >
> > > Developers,
> > >
> > > Could you change
> > >
> > > *public** final* List execute(*final* Object[]
> parameters, Map context)
> > > {
> > > ...
> > > }
> > >
> > > in org.springframework.jdbc.object.SqlQuery to not be
> final ? It
> > > would be nice to overload it, for example to change all
> parameters to
> > > upper case before executing. The similar update method
> in SqlUpdate
> > > is not final. Why be final at all ?
> > >
> > > David Heimann
> > >
>
>
> __________________________________
> Do you Yahoo!?
> Find out what made the Top Yahoo! Searches of 2003
> http://search.yahoo.com/top2003
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: IBM Linux Tutorials.
> Become an expert in LINUX or just sharpen your skills. Sign up for IBM=
's
> Free Linux Tutorials. Learn everything from the bash shell to sys admi=
n.
> Click now! http://ads.osdn.com/?ad_id=3D1278&alloc_id=3D3371&op=3Dclick
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: IBM Linux Tutorials.
> Become an expert in LINUX or just sharpen your skills. Sign up for IBM=
's
> Free Linux Tutorials. Learn everything from the bash shell to sys admi=
n.
> Click now! http://ads.osdn.com/?ad_id=1278&alloc_id371&op=3Dclick
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills. Sign up for IBM's
Free Linux Tutorials. Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id371&op=3Dick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|