Author: jukka
Date: Thu Mar 27 19:40:52 2014
New Revision: 1582450

URL: http://svn.apache.org/r1582450
Log:
OAK-1624: Item names with trailing spaces should not be allowed

Prevent names with leading or trailing whitespace

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java?rev=1582450&r1=1582449&r2=1582450&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/Namespaces.java
 Thu Mar 27 19:40:52 2014
@@ -244,8 +244,12 @@ public class Namespaces implements Names
 
         for (int i = 0; i < local.length(); i++) {
             char ch = local.charAt(i);
-            if ("/:[]|*".indexOf(ch) != -1) { // TODO: XMLChar check
-                return false;
+            if (i == 0 && Character.isWhitespace(ch)) {
+                return false; // leading whitespace
+            } else if (i == local.length() - 1 && Character.isWhitespace(ch)) {
+                return false; // trailing whitespace
+            } else if ("/:[]|*".indexOf(ch) != -1) { // TODO: XMLChar check
+                return false; // invalid name character
             }
         }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java?rev=1582450&r1=1582449&r2=1582450&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java
 Thu Mar 27 19:40:52 2014
@@ -49,6 +49,21 @@ public class NameValidatorTest {
         validator.childNodeAdded("invalid:name", EMPTY_NODE);
     }
 
+    @Test(expected = CommitFailedException.class)
+    public void testTrailingWhitespace() throws CommitFailedException {
+        validator.childNodeAdded("name ", EMPTY_NODE);
+    }
+
+    @Test(expected = CommitFailedException.class)
+    public void testLeadingWhitespace() throws CommitFailedException {
+        validator.childNodeAdded(" name", EMPTY_NODE);
+    }
+
+    @Test(expected = CommitFailedException.class)
+    public void testOnlyWhitespace() throws CommitFailedException {
+        validator.childNodeAdded(" ", EMPTY_NODE);
+    }
+
     @Test
     public void testValidPrefix() throws CommitFailedException {
         validator.childNodeAdded("valid:name", EMPTY_NODE);


Reply via email to