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 >> > >> > >
