On Sun, Oct 25, 2009 at 4:02 AM, sebb <seb...@gmail.com> wrote: > On 25/10/2009, Henri Yandell <flame...@gmail.com> wrote: >> On Sat, Oct 24, 2009 at 4:05 AM, Stephen Colebourne >> <scolebou...@btopenworld.com> wrote: >> > bay...@apache.org wrote: >> >> >> >> URL: http://svn.apache.org/viewvc?rev=826960&view=rev >> >> Log: >> >> Moved identityToString(StringBuffer, Object) to >> >> identityToString(Appendable, Object) per LANG-542 >> >> @@ -178,13 +178,17 @@ >> >> * @param object the object to create a toString for >> >> * @since 2.4 >> >> */ >> >> - public static void identityToString(StringBuffer buffer, Object >> >> object) { >> >> + public static void identityToString(Appendable buffer, Object >> object) >> >> { >> >> if (object == null) { >> >> throw new NullPointerException("Cannot get the toString of a >> >> null identity"); >> >> } >> >> - buffer.append(object.getClass().getName()) >> >> - .append('@') >> >> - >> >> .append(Integer.toHexString(System.identityHashCode(object))); >> >> + try { >> >> + buffer.append(object.getClass().getName()) >> >> + .append('@') >> >> + >> >> .append(Integer.toHexString(System.identityHashCode(object))); >> >> + } catch(java.io.IOException ioe) { >> >> + // can't happen - Appendable API forces it upon us >> >> + } >> >> } >> > >> > This change is invalid. >> > >> > IO classes such as Writer implement Appendable, and appending to those can >> > throw an IOException. >> >> >> Yup. I remember telling myself it was fine because we passed a >> StringBuilder in so the IOException wouldn't happen.... 'cept that's >> only if someone calls identityToString(Object) :) >> >> I've rolled back the change for now. I don't like IOException being >> added to the API. I'm tempted by the somewhat lame solution of a >> private Appendable method, and explicitly supporting StringBuffer, >> StringBuilder and StrBuilder. >> > > Unfortunately StringBuilder & StringBuffer don't have a common > accessible parent. > [Seems like a design fault to me] > > Rather than swallowing the Exception, why not convert the IOException > to an unchecked Exception? (and document the restriction) > > The only reason for using Appendable is to support > StringBuilder/Buffer, so if it is used with any other Appendable > classes, let the user beware.
Why not just do (StringBuilder, Object); (StringBuffer, Object) and (StrBuilder, Object) if that's the intent? Hen --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org