Bah2 ;-) Saw this message after I had already responded to the previous one....
Hiran ----------------------------------------- Hiran Chaudhuri SAG Systemhaus GmbH Elsenheimer Straße 11 80867 München Phone +49-89-54 74 21 34 Fax +49-89-54 74 21 99 > -----Original Message----- > From: Paul Speed [mailto:[EMAIL PROTECTED] > Sent: Donnerstag, 7. Oktober 2004 17:41 > To: Struts Developers List > Subject: Re: Proposed Action base class change > > Bah! Realized after I hit send that you were talking about logging. > Others have already pointed out how to do that one using the > System call. > > So, nevermind. > -Paul > > Paul Speed wrote: > > > I'd just like to point out that the only valid way to tell if two > > objects are the same instance if to use ==. Any other > approach will > > not work. > > > > Comparing the toString() method results as you do is only really > > comparing the hashcodes... which are not unique by a long shot (I > > never assume people know this). Besides, == is even faster. What > > cases do you find that you've had to use > .toString().equals(...) where > > you couldn't just do an == check? > > > > -Paul > > > > [EMAIL PROTECTED] wrote: > > > >> Hi, Frank. > >> > >> I do not agree. While in most cases it is desireable to > see inside a > >> bean (hence I created my public static String > toString(Object bean) > >> method), there are times when I just have to make sure a > bean is not > >> just equal but the same instance. > >> The java.lang.Object.toString() methods allows me to that quite > >> quickly as the memory address is printed. > >> > >> Unless you have another way to provide that information, > I'd rather > >> stick with the default toString() plus some utility > toString(Object) > >> method. The impact for you is not too much. What you code > so far is: > >> log.debug("mybean="+mybean); > >> and you'd have to change that to > >> log.debug("mybean="+BeanUtil.toString(mybean)); > >> which will allow you to either see the memory address or the > >> contents, whatever you prefer. > >> > >> Hiran > >> > >> ----------------------------------------- > >> Hiran Chaudhuri > >> SAG Systemhaus GmbH > >> Elsenheimer Straße 11 > >> 80867 München > >> Phone +49-89-54 74 21 34 > >> Fax +49-89-54 74 21 99 > >> > >> > >> > >> > >> > >>> -----Original Message----- > >>> From: Frank W. Zammetti [mailto:[EMAIL PROTECTED] Sent: > >>> Donnerstag, 7. Oktober 2004 13:43 > >>> To: Struts Developers List > >>> Subject: Re: Proposed Action base class change > >>> > >>> Hi Niall, > >>> > >>> I certainly agree it would not be possible to satisfy > everyone, but > >>> seeing as the intrinsic toString() is all but useless > (and people do > >>> generally expect that to be the case with many classes), why not > >>> give an implementation that is of at least some use to > some people? > >>> Surely it would be better than what you get now? Obviously it's > >>> something many people will override, and that's of course > the whole > >>> point of inheritance. But providing even a slightly more useful > >>> default implementation (and maybe telling people it's a basic > >>> default implementation so as to try and keep the flood of > bugzilla > >>> requests to a > >>> minimum) seems to me like a good idea. > >>> > >>> I can't address your point about dynabeans because I haven't used > >>> them enough to be able to intelligently comment (which is > to say I > >>> haven't used them at all! :) )... I wouodn't imagine some basic > >>> implementation would be too tough for them as well. > >>> > >>> In any case, I will look at the toString builders you > mentioned... > >>> I've come to really like using the commons packages and I try to > >>> whenever I can. This would be a good case I think, if it doesn't > >>> get added as I proposed. I already have an ActionHelpers > class with > >>> a bunch of similarly-themed static methods for use from > Actions, so > >>> maybe it's time to do so for forms as well. > >>> > >>> -- > >>> Frank W. Zammetti > >>> Founder and Chief Software Architect Omnytex Technologies > >>> http://www.omnytex.com > >>> > >>> Niall Pemberton wrote: > >>> > >>>> Frank, > >>>> > >>>> For me it wouldn't be any use unless it also handled > >>> > >>> > >>> DynaBeans. Even > >>> > >>>> then I'd end up overriding it because I have some > formatting utils > >>>> which do dates, arrays and collections. Seems to me if > we put it in > >>>> then we would end up with a monster trying to satisy > >>> > >>> > >>> everyones needs > >>> > >>>> and forever dealing with bugzilla requests for > enhacements (someone > >>>> would want an i18n version!) - all just for debugging. > >>>> > >>>> The easiest thing is to just put all that code into a > >>> > >>> > >>> utility method - > >>> > >>>> that way its only a one liner in the toString() - even > >>> > >>> > >>> better if you > >>> > >>>> have your own "base" ActionForm that all you others derive > >>> > >>> > >>> from, then > >>> > >>>> its only in one place. > >>>> > >>>> Also, there are a set of "toString" builders in commons > >>> > >>> > >>> lang which you > >>> > >>>> might like to use - including a reflection one like yours: > >>>> > >>>> > >>> > >>> > http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/b > >>> ui > >>> > >>>> lder/package-summary.html > >>> > >>> > >>> > http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/b > >>> ui > >>> > >>>> lder/ReflectionToStringBuilder.html > >>>> > >>>> Niall > >>>> > >>>> ----- Original Message ----- > >>>> From: "Frank W. Zammetti" <[EMAIL PROTECTED]> > >>>> To: "Struts Developer" <[EMAIL PROTECTED]> > >>>> Sent: Thursday, October 07, 2004 4:29 AM > >>>> Subject: Re: Proposed Action base class change > >>>> > >>>> > >>>> > >>>> > >>>>> Obviously I made a typo in the subject... this applies to the > >>>>> ActionForm base class. > >>>>> > >>>>> Did anyone have any comment on this? I've noticed a lack > >>> > >>> > >>> of activity > >>> > >>>>> on the list lately... > >>>>> > >>>>> > >>>>> > >>>>>> Hello all... > >>>>>> > >>>>>> I find myself all the time overloading toString() of my > >>> > >>> > >>> ActionForms > >>> > >>>>>> for > >>>> > >>>> > >>>> debugging > >>>> > >>>> > >>>>>> purposes, so I can easily dump the current state of > the object. > >>>>>> I had > >>>> > >>>> > >>>> been doing > >>>> > >>>> > >>>>>> this for each ActionForm class, specifically for it, but > >>> > >>> > >>> it ocurrs to > >>> > >>>>>> me > >>>> > >>>> > >>>> that a > >>>> > >>>> > >>>>>> general-purpose reflection-based approach would be better. > >>>>>> > >>>>>> I'd like to propose adding this functionality to the > >>> > >>> > >>> ActionForm base > >>> > >>>> class. Here's > >>>> > >>>> > >>>>>> the code I propose adding: > >>>>>> > >>>>>> import java.lang.reflect.Field; > >>>>>> public static final AVERAGE_FIELD_SIZE = 25; public String > >>> > >>> > >>> toString() > >>> > >>>>>> { > >>>>>> String str = ""; > >>>>>> StringBuffer sb = null; > >>>>>> try { > >>>>>> Field[] fields = this.getClass().getDeclaredFields(); > >>>>>> sb = new StringBuffer(fields.length * AVERAGE_FIELD_SIZE); > >>>>>> for (int i = 0; i < fields.length; i++) { > >>>>>> if (sb.length() > 0) { sb.append(", "); } > >>>>>> sb.append(fields[i].getName() + "=" + fields[i].get(this)); > >>>>>> } > >>>>>> str = sb.toString().trim(); > >>>>>> } catch (Exception e) { > >>>>>> str = "Exception in ActionForm.toString() : " + e; } return > >>>>>> str; } > >>>>>> > >>>>>> The value of AVERAGE_FIELD_SIZE is a matter of debate, > and it's > >>>>>> of > >>>> > >>>> > >>>> course impossible > >>>> > >>>> > >>>>>> to come up with a real value, so something reasonable is > >>> > >>> > >>> the answer. > >>> > >>>>>> 25 > >>>> > >>>> > >>>> struck me > >>>> > >>>> > >>>>>> as a decent starting point. > >>>>>> > >>>>>> What does everyone think? I find this functionality > to be very > >>>>>> useful > >>>> > >>>> > >>>> in my work, > >>>> > >>>> > >>>>>> and I suspect others may as well. The code doesn't add any > >>>>>> dependencies > >>>> > >>>> > >>>> outside > >>>> > >>>> > >>>>>> J2SE, and it's certainly simple enough as to not be > >>> > >>> > >>> particularly risky. > >>> > >>>>>> Thanks all! > >>>>>> > >>>>>> Frank W. Zammetti > >>>>>> Founder and Chief Software Architect Omnytex Technologies > >>>>>> http://www.omnytex.com > >>>>>> > >>>>> > >>>>> > >>>>> ------------------------------------------------------------ > >>> > >>> > >>> --------- > >>> > >>>>> 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] > >>>> > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >>> > >>> > >>> > --------------------------------------------------------------------- > >>> 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] > > > > > > > --------------------------------------------------------------------- > > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]