WICKET-4972 Remove (or disarm) varargs contructors of StringResourceModel (more of a pitfall than convenience)
Change the type of "defaultValue" from String to IModel<String> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/05f7207f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/05f7207f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/05f7207f Branch: refs/heads/wicket-4774 Commit: 05f7207fcdcafa2e632a34941acb312496107cbb Parents: ecdb67a Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Thu May 2 17:02:36 2013 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Thu May 2 17:02:36 2013 +0200 ---------------------------------------------------------------------- .../apache/wicket/model/StringResourceModel.java | 21 ++++++++++----- 1 files changed, 14 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/05f7207f/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java index 50f9047..95b37f8 100644 --- a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java +++ b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java @@ -198,7 +198,7 @@ public class StringResourceModel extends LoadableDetachableModel<String> private final String resourceKey; /** The default value of the message. */ - private final String defaultValue; + private final IModel<String> defaultValue; @Override public IWrapModel<String> wrapOnAssignment(Component component) @@ -321,7 +321,7 @@ public class StringResourceModel extends LoadableDetachableModel<String> * The parameters to substitute using a Java MessageFormat object */ public StringResourceModel(final String resourceKey, final Component component, - final IModel<?> model, final String defaultValue, final Object... parameters) + final IModel<?> model, final IModel<String> defaultValue, final Object... parameters) { if (resourceKey == null) { @@ -373,7 +373,7 @@ public class StringResourceModel extends LoadableDetachableModel<String> * The default value if the resource key is not found. */ public StringResourceModel(final String resourceKey, final IModel<?> model, - final String defaultValue, final Object... parameters) + final IModel<String> defaultValue, final Object... parameters) { this(resourceKey, null, model, defaultValue, parameters); } @@ -423,20 +423,22 @@ public class StringResourceModel extends LoadableDetachableModel<String> { // Get the string resource, doing any property substitutions as part // of the get operation - value = localizer.getString(getResourceKey(), component, model, defaultValue); + String defaultVal = defaultValue != null ? defaultValue.getObject() : null; + value = localizer.getString(getResourceKey(), component, model, defaultVal); if (value == null) { - value = defaultValue; + value = defaultVal; } } else { // Get the string resource, doing not any property substitutions // that has to be done later after MessageFormat - value = localizer.getString(getResourceKey(), component, null, defaultValue); + String defaultVal = defaultValue != null ? defaultValue.getObject() : null; + value = localizer.getString(getResourceKey(), component, null, defaultVal); if (value == null) { - value = defaultValue; + value = defaultVal; } if (value != null) { @@ -613,6 +615,11 @@ public class StringResourceModel extends LoadableDetachableModel<String> } } } + + if (defaultValue != null) + { + defaultValue.detach(); + } } @Override
