You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/06/13 19:35:37 UTC
wicket git commit: WICKET-6393 NestedStringResourceLoader ignores
hard-coded default values and throws MissingResourceException
Repository: wicket
Updated Branches:
refs/heads/wicket-7.x ab461d5d2 -> 28d4a4bbb
WICKET-6393 NestedStringResourceLoader ignores hard-coded default values and throws MissingResourceException
Return null is any of the placeholders cannot resolve its value. This way the provided defaultValue will be used.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/28d4a4bb
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/28d4a4bb
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/28d4a4bb
Branch: refs/heads/wicket-7.x
Commit: 28d4a4bbbca60d2b3011cb61475af863613d62ba
Parents: ab461d5
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jun 13 21:34:26 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jun 13 21:34:26 2017 +0200
----------------------------------------------------------------------
.../loader/NestedStringResourceLoader.java | 66 +++-----------------
.../loader/ClassStringResourceLoaderTest.java | 3 -
...est$NestedWithMissingKeyValidator.properties | 2 +
.../loader/NestedStringResourceLoaderTest.java | 28 +++++++++
4 files changed, 40 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/28d4a4bb/wicket-core/src/main/java/org/apache/wicket/resource/loader/NestedStringResourceLoader.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/loader/NestedStringResourceLoader.java b/wicket-core/src/main/java/org/apache/wicket/resource/loader/NestedStringResourceLoader.java
index e84d783..a2ec9c6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/loader/NestedStringResourceLoader.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/loader/NestedStringResourceLoader.java
@@ -16,20 +16,18 @@
*/
package org.apache.wicket.resource.loader;
+import org.apache.wicket.Application;
+import org.apache.wicket.Component;
+import org.apache.wicket.settings.ResourceSettings;
+import org.apache.wicket.util.lang.Args;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
-import java.util.MissingResourceException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.wicket.Application;
-import org.apache.wicket.Component;
-import org.apache.wicket.settings.ResourceSettings;
-import org.apache.wicket.util.lang.Args;
-import org.apache.wicket.util.string.AppendingStringBuffer;
-
/**
* Creates a nested string resource loader which resolves nested keys.<br>
* <br>
@@ -128,7 +126,7 @@ public class NestedStringResourceLoader implements IStringResourceLoader
if (value == null)
{
- return handleMissingKey(key, locale, style, component, value);
+ return null;
}
StringBuffer output = new StringBuffer();
@@ -141,57 +139,13 @@ public class NestedStringResourceLoader implements IStringResourceLoader
? loadNestedStringResource(component, nestedKey, locale, style, variation)
: loadNestedStringResource(clazz, nestedKey, locale, style, variation);
- replacedPlaceHolder = handleMissingKey(nestedKey, locale, style, component,
- replacedPlaceHolder);
+ if (replacedPlaceHolder == null)
+ {
+ return null;
+ }
matcher.appendReplacement(output, replacedPlaceHolder);
}
matcher.appendTail(output);
return output.toString();
}
-
- /**
- * Handles a missing key
- *
- * @param nestedKey
- * the key which is going to be handled
- * @param locale
- * the actual locale
- * @param style
- * the style
- * @param component
- * the component
- *
- * @param replacedPlaceHolder
- * @return the replacedPlaceholder
- */
- private String handleMissingKey(String nestedKey, Locale locale, String style,
- Component component, String replacedPlaceHolder)
- {
- if (replacedPlaceHolder == null)
- {
- if (resourceSettings.getThrowExceptionOnMissingResource())
- {
- AppendingStringBuffer message = new AppendingStringBuffer(
- "Unable to find property: '");
- message.append(nestedKey);
- message.append('\'');
-
- if (component != null)
- {
- message.append(" for component: ");
- message.append(component.getPageRelativePath());
- message.append(" [class=").append(component.getClass().getName()).append(']');
- }
- message.append(". Locale: ").append(locale).append(", style: ").append(style);
-
- throw new MissingResourceException(message.toString(),
- (component != null ? component.getClass().getName() : ""), nestedKey);
- }
- else
- {
- replacedPlaceHolder = "[Warning: Property for '" + nestedKey + "' not found]";
- }
- }
- return replacedPlaceHolder;
- }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/28d4a4bb/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java b/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java
index f2d4ee4..73b275c 100644
--- a/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java
@@ -41,9 +41,6 @@ public class ClassStringResourceLoaderTest extends WicketTestCase
loader.loadStringResource((Component)null, "error", null, null, null));
}
- /**
- *
- */
public static class MyValidator implements IValidator<String>
{
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/wicket/blob/28d4a4bb/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest$NestedWithMissingKeyValidator.properties
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest$NestedWithMissingKeyValidator.properties b/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest$NestedWithMissingKeyValidator.properties
new file mode 100644
index 0000000..754783a
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest$NestedWithMissingKeyValidator.properties
@@ -0,0 +1,2 @@
+key1=This is a
+nested=#(key1) #(key2)
http://git-wip-us.apache.org/repos/asf/wicket/blob/28d4a4bb/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest.java b/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest.java
index 4753331..19f357e 100644
--- a/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/resource/loader/NestedStringResourceLoaderTest.java
@@ -20,8 +20,11 @@ import java.util.List;
import java.util.regex.Pattern;
import org.apache.wicket.Component;
+import org.apache.wicket.Localizer;
import org.apache.wicket.resource.loader.ClassStringResourceLoaderTest.MyValidator;
import org.apache.wicket.util.tester.WicketTestCase;
+import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
import org.junit.Test;
/**
@@ -46,4 +49,29 @@ public class NestedStringResourceLoaderTest extends WicketTestCase
nestedStringResourceLoader.loadStringResource((Component)null, "nested", null, null, null));
}
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-6393
+ */
+ @Test
+ public void whenAnyKeyIsMissing_thenUseTheDefaultValue(){
+ List<IStringResourceLoader> loaders = tester.getApplication().getResourceSettings().getStringResourceLoaders();
+ ClassStringResourceLoader classStringResourceLoader = new ClassStringResourceLoader(NestedWithMissingKeyValidator.class);
+ loaders.add(classStringResourceLoader);
+ NestedStringResourceLoader nestedStringResourceLoader = new NestedStringResourceLoader(loaders,Pattern.compile("#\\(([^ ]*?)\\)"));
+ loaders.clear();
+ loaders.add(nestedStringResourceLoader);
+
+ final String defaultValue = "default value";
+ assertEquals(defaultValue, Localizer.get().getString("nested", null, defaultValue));
+ }
+
+ public static class NestedWithMissingKeyValidator implements IValidator<String>
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void validate(IValidatable<String> v)
+ {
+ }
+ }
}