That's a good point Mike, I didn't think of that. You might have changed MY mind on this! I'll have to think about it a little more, but you raise a solid issue.

--
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com

Mike Stanley wrote:
I'm -1 on this.

By default, I think the ActionForms toString should be the default
Object.toString. If you need/desire you can easily still create a base
support class for your projects that implement the reflection based
toString you suggest.


The reason I'm anti- this is that it will cause (in some cases) field
values to be unexpectedly logged. And many times there are fields that
you don't want logged. i.e. passwords, credit cards, etc.


BTW - a similar utility is also available in commons-lang -
ToStringBuilder.


- Mike

On Wed, 2004-10-06 at 23:29, Frank W. Zammetti wrote:


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]



Reply via email to