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());
+       }
 }

Reply via email to