I gave it some more thoughts and I admit it's a bit radical but I think we
should simply remove all these constructors and give StringResourceModel a
fluid interface.

We could keep 2 constructors:
StringResourceModel(final String resourceKey, final Component component)
StringResourceModel(final String resourceKey)

and add the following methods:
setDefaultValue
setModel
setParameters
all these methods returning 'this'.

We often call the constructors with null values for some of these
parameters anyway and it would be far more readable and less error prone.

When I upgrade, I really prefer having compilation errors rather than code
silently failing (currently it might not take the default value and it
might get an off by one error for the parameters).

Thoughts?

On Wed, May 13, 2015 at 1:44 PM, Guillaume Smet <[email protected]>
wrote:

> Yup, that's exactly the issue I had.
>
> It's not hard to fix in user code. The hard part is to find the
> occurrences of the issue in the code.
>
>
> On Wed, May 13, 2015 at 8:05 AM, Martin Grigorov <[email protected]>
> wrote:
>
>> https://issues.apache.org/jira/browse/WICKET-5906 sounds related.
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Mon, May 11, 2015 at 11:26 PM, Guillaume Smet <
>> [email protected]>
>> wrote:
>>
>> > Hi,
>> >
>> > Still working on the migration to 7.
>> >
>> > We used this pattern with Wicket 6:
>> > new StringResourceModel(propertyModel.getObject(), null,
>> > propertyModel.getObject(), objectModel, secondaryObjectModel))
>> > which was directed to the following constructor:
>> > StringResourceModel(key, model, defaultValue, Object... parameters)
>> >
>> > When migrating to 7, this pattern is silently directed to the following
>> > constructor:
>> > StringResourceModel(key, model, Object... parameters)
>> > thus the replacements are wrong.
>> >
>> > The fact that our application is silently broken is kinda annoying.
>> >
>> > I ended up moving to:
>> > new StringResourceModel(propertyModel.getObject(), (IModel<?>) null,
>> > propertyModel, new Object[] { objectModel, secondaryObjectModel }))
>> >
>> > I don't know if there is something to do about it but I thought I might
>> as
>> > well get it out here.
>> >
>> > --
>> > Guillaume
>> >
>>
>
>

Reply via email to