On Sun, Oct 25, 2009 at 4:02 AM, sebb <sebbaz@gmail.com> wrote:
> On 25/10/2009, Henri Yandell <flamefew@gmail.com> wrote:
>> On Sat, Oct 24, 2009 at 4:05 AM, Stephen Colebourne
>> <scolebourne@btopenworld.com> wrote:
>> > bayard@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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
|