Ok, thanks for elaborating. I'll submit a PR for review soon.

Take care,

Daniel



On Fri, Aug 22, 2025 at 7:11 AM Philip Race <philip.r...@oracle.com> wrote:

> I suppose they won't be that surprised, since it has been the behaviour
> already.
>
> I think it unlikely that an app throws null at TextLayout on purpose
> knowing it won't work.
> That's the realm of conformance tests, not real programs, so I'm not
> terribly worried about that.
>
> What I was getting at, in part, is that it seems possible to me that this
> was not checked
> because the thinking was in this case, null was allowed and meant a
> default FRC.
> If we change the exception type it makes it one step harder if we find out
> that's where we want to end up.
> I don't see a lot of supporting evidence for that, so I am just throwing
> it out there.
> It could also be that it was added at a different time by some one not
> following the rest of the API
>
> But this point is minor. The big question is around the empty string.
> It certainly was a pain for me when doing printing when I had needed to
> use TextLayout
> and had to be careful of this case.
>
> It would be 'ideal' if "" was just silently handled and didn't cause
> issues for existing code - other than conformance tests
> which shouldn't be testing unspecified behaviour anyway.
>
> -phil.
>
> On 8/19/25 4:29 AM, Daniel Gredler wrote:
>
> Hi Phil,
>
> >> First, there is a related API oddity in that null FontRenderContext
> >> parameters passed to the TextLayout constructors cause a
> >> NullPointerException, rather than an IllegalArgumentException (like
> >> all other parameters). Can this behavior also be changed?
>
> > It is a bit odd that frc is the only one not explicitly checked so the
> > NPE is just what 'happens'.
> > I'd be reluctant to change the NPE without a good reason [...]
> > I'd say just specify what happens for complete compatibility.
>
> I guess I'm hesitant to promote an "accidental" NPE to official behavior
> here, when all other null parameter values are handled with an explicit
> IAE. This inconsistency is going to surprise developers, and avoiding that
> surprise would be ideal. How likely is it that adding an explicit
> IAE-generating null FRC check here will break existing code?
>
> Take care,
>
> Daniel
>
>
> On Mon, Aug 11, 2025 at 7:12 PM Philip Race <philip.r...@oracle.com>
> wrote:
>
>>
>>
>> On 8/11/25 9:20 AM, Daniel Gredler wrote:
>> > Hi all,
>> >
>> > I was thinking of taking a stab at JDK-4138921 [1], and I have a
>> > couple of questions.
>> >
>> > First, there is a related API oddity in that null FontRenderContext
>> > parameters passed to the TextLayout constructors cause a
>> > NullPointerException, rather than an IllegalArgumentException (like
>> > all other parameters). Can this behavior also be changed?
>>
>> None of these are documented .. they all should be.
>>
>> It is a bit odd that frc is the only one not explicitly checked so the
>> NPE is just what 'happens'.
>> I'd be reluctant to change the NPE without a good reason and I'm
>> half-wondering if a null FRC was
>> supposed to default to a default FRC ?? But somewhere along the line the
>> implementation changed.
>> I'd say just specify what happens for complete compatibility.
>>
>> >
>> > Second, changing all three TextLayout constructors to accept empty
>> > strings sort of implies that we should also allow empty strings in
>> > AttributedString instances (this is currently only allowed if the
>> > attribute map is empty). Is it OK to change this behavior as well?
>>
>> I don't think I ever understood why this was dis-allowed on TextLayout.
>> Perhaps it was to prevent some incorrect usage from ever slipping into
>> being acceptable ?
>>
>> AttributedString is part of the java.base module, I don't have any say
>> over that, although in the very beginning
>> there was a decent overlap in the people working on that and TextLayout
>> etc.
>> I'd start by asking Naoto (cc'ed).
>>
>> -phil.
>>
>> >
>> > Let me know your thoughts!
>> >
>> > Daniel
>> >
>> > [1] https://bugs.openjdk.org/browse/JDK-4138921
>> >
>> >
>>
>>
>

Reply via email to