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

Reply via email to