You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2013/05/02 17:04:15 UTC

[jira] [Resolved] (WICKET-4972) Remove (or disarm) varargs contructors of StringResourceModel (more of a pitfall than convenience)

     [ https://issues.apache.org/jira/browse/WICKET-4972?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Grigorov resolved WICKET-4972.
-------------------------------------

    Resolution: Fixed
    
> Remove (or disarm) varargs contructors of StringResourceModel (more of a pitfall than convenience)
> --------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-4972
>                 URL: https://issues.apache.org/jira/browse/WICKET-4972
>             Project: Wicket
>          Issue Type: Wish
>          Components: wicket
>    Affects Versions: 6.4.0
>            Reporter: Peter Parson
>            Assignee: Martin Grigorov
>             Fix For: 7.0
>
>
> The introduction of varargs constructors for StringResourceModel also introduced a pitfall which (IMO) outweighs the convenience of not explicitely having to create an array.
> When using this constructor:
> public StringResourceModel(final String resourceKey, final Component component, final IModel<?> model, final Object... parameters)
> one runs into problems when parameters are of type String (which probably happens more often than not), since the VM acutally ends up calling
> public StringResourceModel(final String resourceKey, final Component component, final IModel<?> model, final String defaultValue, final Object... parameters)
> From my experience, this happens repeatedly to Wicket newbies, but still to "veterans" sometimes.
> Example (does not work as one would expect):
> new StringResourceModel("my.resource.key", this, getModel(), "first param to replace", "second param to replace");
> Forcing to do either
> new StringResourceModel("my.resource.key", this, getModel(), null, "first param to replace", "second param to replace");
> or
> new StringResourceModel("my.resource.key", this, getModel(), newObject[]{"first param to replace", "second param to replace"});
> I think varargs is a convenient feature, but in this special case it introduces confusion, outweighing the convenience by far, thus I suggest to expect explicit array like before.
> Another solution might be to expect a Model<String> as defaultValue or to change the order of constructor arguments.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira