Frank, I also had to go a long way until I found this approach. It actually came to me when I saw in my project many data objects (= java beans) were generated using UML tools that did not care about the toString() method my way. Next I saw Castor XML/JAXB and JDO code generation, and finally had to decide that a common base class or implementing each and every toString method is not the solution.
With the static method I can apply my toString implementation to any object that comes along - just what you need for debugging. I just wonder why the Apache commons-beanutils does not provide such a method, and someone mentioned it might be in commons-lang, but I could not find that either. 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Donnerstag, 7. Oktober 2004 14:22 > To: [EMAIL PROTECTED] > Subject: RE: Proposed Action base class change > > Another fair point. :) > > Well, that's the reason I put the idea out there... I can't > think of every possible angle to look at it from... If I > thought I could, I wouldn't need to solicit opinions in the > first place. > > Kind of depressing though... I'm trying to contribute, but so > far all my ideas have been shot down (but for good reasons, > so I'm not bitter about it). Just have to keep trying I suppose. :) > > -- > Frank W. Zammetti > Founder and Chief Software Architect > Omnytex Technologies > http://www.omnytex.com > > On Thu, October 7, 2004 8:56 am, [EMAIL PROTECTED] said: > > 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/bu > >> i > >> > lder/package-summary.html > >> > > >> > http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/bu > >> i > >> > 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]