Updated Branches: refs/heads/master 42daa225c -> 6c54afda0
WICKET-4393 no trailing dots from ResourceNameIterator Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6c54afda Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6c54afda Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6c54afda Branch: refs/heads/master Commit: 6c54afda00653bb1f355938a2d1743f55f0cad17 Parents: 42daa22 Author: svenmeier <[email protected]> Authored: Tue Feb 7 18:02:16 2012 +0100 Committer: svenmeier <[email protected]> Committed: Tue Feb 7 18:02:16 2012 +0100 ---------------------------------------------------------------------- .../apache/wicket/resource/PropertiesFactory.java | 2 +- .../locator/ExtensionResourceNameIterator.java | 24 ++++-- .../resource/locator/ResourceNameIteratorTest.java | 63 +++++++++++++-- 3 files changed, 73 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/6c54afda/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java b/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java index 279de87..18b98f8 100644 --- a/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java +++ b/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java @@ -147,7 +147,7 @@ public class PropertiesFactory implements IPropertiesFactory while ((properties == null) && iter.hasNext()) { IPropertiesLoader loader = iter.next(); - String fullPath = path + loader.getFileExtension(); + String fullPath = path + "." + loader.getFileExtension(); // If not in the cache than try to load properties IResourceStream resourceStream = context.getResourceStreamLocator() http://git-wip-us.apache.org/repos/asf/wicket/blob/6c54afda/wicket-core/src/main/java/org/apache/wicket/util/resource/locator/ExtensionResourceNameIterator.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/util/resource/locator/ExtensionResourceNameIterator.java b/wicket-core/src/main/java/org/apache/wicket/util/resource/locator/ExtensionResourceNameIterator.java index 319d994..6a83510 100644 --- a/wicket-core/src/main/java/org/apache/wicket/util/resource/locator/ExtensionResourceNameIterator.java +++ b/wicket-core/src/main/java/org/apache/wicket/util/resource/locator/ExtensionResourceNameIterator.java @@ -23,7 +23,7 @@ import org.apache.wicket.util.string.Strings; /** * Iterate over a list of 'comma' separated strings. If an empty string is provided, hasNext() will - * successfully return once with next() returning an empty string (""). + * successfully return once with next() returning {@code null}. * * @author Juergen Donnerstag */ @@ -37,6 +37,7 @@ public class ExtensionResourceNameIterator implements Iterator<String> * Construct. * * @param extension + * {@code null} or comma separated extensions * @param separatorChar */ public ExtensionResourceNameIterator(final String extension, final char separatorChar) @@ -46,7 +47,7 @@ public class ExtensionResourceNameIterator implements Iterator<String> if (extensions.length == 0) { // Fail safe: hasNext() needs to return at least once with true. - extensions = new String[] { "" }; + extensions = new String[] { null }; } this.extensions = extensions; @@ -64,13 +65,14 @@ public class ExtensionResourceNameIterator implements Iterator<String> } /** - * @return The next filename extension. A leading '.' will be removed. + * @return The next filename extension. */ @Override public String next() { - String rtn = extensions[index++].trim(); - return rtn.startsWith(".") ? rtn.substring(1) : rtn; + index++; + + return getExtension(); } /** @@ -78,8 +80,16 @@ public class ExtensionResourceNameIterator implements Iterator<String> */ public final String getExtension() { - String rtn = extensions[index - 1].trim(); - return rtn.startsWith(".") ? rtn.substring(1) : rtn; + String extension = extensions[index - 1]; + if (extension != null) + { + extension = extension.trim(); + if (extension.startsWith(".")) + { + extension = extension.substring(1); + } + } + return extension; } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/6c54afda/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/ResourceNameIteratorTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/ResourceNameIteratorTest.java b/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/ResourceNameIteratorTest.java index 68191ec..965be43 100644 --- a/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/ResourceNameIteratorTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/util/resource/locator/ResourceNameIteratorTest.java @@ -84,25 +84,57 @@ public class ResourceNameIteratorTest extends WicketTestCase iterator.next(); assertFalse(iterator.hasNext()); - iterator = new StyleAndVariationResourceNameIterator("style", "variation"); + iterator = new StyleAndVariationResourceNameIterator("style", null); assertTrue(iterator.hasNext()); + iterator.next(); + assertEquals("style", iterator.getStyle()); + assertEquals(null, iterator.getVariation()); + iterator.next(); + assertEquals(null, iterator.getStyle()); + assertEquals(null, iterator.getVariation()); + assertFalse(iterator.hasNext()); + iterator = new StyleAndVariationResourceNameIterator("style", "variation"); + assertTrue(iterator.hasNext()); iterator.next(); assertEquals("style", iterator.getStyle()); assertEquals("variation", iterator.getVariation()); - iterator.next(); assertEquals("style", iterator.getStyle()); - assertNull(iterator.getVariation()); - + assertEquals(null, iterator.getVariation()); iterator.next(); - assertNull(iterator.getStyle()); + assertEquals(null, iterator.getStyle()); assertEquals("variation", iterator.getVariation()); - iterator.next(); - assertNull(iterator.getStyle()); - assertNull(iterator.getVariation()); + assertEquals(null, iterator.getStyle()); + assertEquals(null, iterator.getVariation()); + assertFalse(iterator.hasNext()); + } + + /** + * + */ + @Test + public void extensionResourceNameIterator() + { + ExtensionResourceNameIterator iterator = new ExtensionResourceNameIterator(null, ','); + assertTrue(iterator.hasNext()); + assertEquals(null, iterator.next()); + assertFalse(iterator.hasNext()); + iterator = new ExtensionResourceNameIterator("txt", ','); + assertTrue(iterator.hasNext()); + assertEquals("txt", iterator.next()); + assertFalse(iterator.hasNext()); + + iterator = new ExtensionResourceNameIterator("properties,utf8.properties,properties.xml", + ','); + assertTrue(iterator.hasNext()); + assertEquals("properties", iterator.next()); + assertTrue(iterator.hasNext()); + assertEquals("utf8.properties", iterator.next()); + assertTrue(iterator.hasNext()); + assertEquals("properties.xml", iterator.next()); assertFalse(iterator.hasNext()); } @@ -126,4 +158,19 @@ public class ResourceNameIteratorTest extends WicketTestCase } assertEquals(6, variations.size()); } + + /** + * + */ + @Test + public void noTrailingDotWhenNoExtension() + { + Iterator<String> iterator = new ResourceNameIterator("foo", null, null, null, null, false); + + assertTrue(iterator.hasNext()); + + assertEquals("foo", iterator.next()); + + assertFalse(iterator.hasNext()); + } }
