You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2008/04/15 11:49:21 UTC

svn commit: r648198 - in /incubator/sling/trunk: launchpad/webapp/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/ sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/

Author: cziegeler
Date: Tue Apr 15 02:49:14 2008
New Revision: 648198

URL: http://svn.apache.org/viewvc?rev=648198&view=rev
Log:
SLING-354: Add "name" that exactly specifies a name and changed behaviour of "nameHint" to be the same as jcr:title etc.

Modified:
    incubator/sling/trunk/launchpad/webapp/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/GeneratedNodeNameTest.java
    incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameFilter.java
    incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameGenerator.java
    incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java

Modified: incubator/sling/trunk/launchpad/webapp/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/GeneratedNodeNameTest.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/launchpad/webapp/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/GeneratedNodeNameTest.java?rev=648198&r1=648197&r2=648198&view=diff
==============================================================================
--- incubator/sling/trunk/launchpad/webapp/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/GeneratedNodeNameTest.java (original)
+++ incubator/sling/trunk/launchpad/webapp/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/GeneratedNodeNameTest.java Tue Apr 15 02:49:14 2008
@@ -39,9 +39,17 @@
 
     public void testSlingPostNodeNameParam() throws IOException {
         final Map<String,String> props = new HashMap<String,String>();
-        props.put("sling:post:nodeName", "MyNodeName");
+        props.put("sling:post:name", "MyNodeName");
         final String location = testClient.createNode(postUrl, props);
         final String expect = "MyNodeName";
+        assertTrue("Location " + location + " ends with " + expect,location.endsWith(expect));
+    }
+
+    public void testSlingPostNodeNameHintParam() throws IOException {
+        final Map<String,String> props = new HashMap<String,String>();
+        props.put("sling:post:nameHint", "AnotherNodeName");
+        final String location = testClient.createNode(postUrl, props);
+        final String expect = "AnotherNodeName".toLowerCase();
         assertTrue("Location " + location + " ends with " + expect,location.endsWith(expect));
     }
 

Modified: incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameFilter.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameFilter.java?rev=648198&r1=648197&r2=648198&view=diff
==============================================================================
--- incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameFilter.java (original)
+++ incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameFilter.java Tue Apr 15 02:49:14 2008
@@ -17,59 +17,39 @@
 package org.apache.sling.servlets.post.impl;
 
 
-/** Filter a String so that it can be used as a NodeName */
+/**
+ * Filter a String so that it can be used as a NodeName.
+ */
 public class NodeNameFilter {
 
     public static final String ALLOWED_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789_";
     public static final char REPLACEMENT_CHAR = '_';
 
     public String filter(String nodeName) {
-      final StringBuffer sb  = new StringBuffer();
-      char lastAdded = 0;
+        final StringBuffer sb  = new StringBuffer();
+        char lastAdded = 0;
 
-      nodeName = nodeName.toLowerCase();
-      for(int i=0; i < nodeName.length(); i++) {
-        final char c = nodeName.charAt(i);
-        char toAdd = c;
-
-        if(ALLOWED_CHARS.indexOf(c)< 0) {
-          if(lastAdded == REPLACEMENT_CHAR) {
-            // do not add several _ in a row
-            continue;
-          }
-          toAdd = REPLACEMENT_CHAR;
+        nodeName = nodeName.toLowerCase();
+        for(int i=0; i < nodeName.length(); i++) {
+            final char c = nodeName.charAt(i);
+            char toAdd = c;
+
+            if (ALLOWED_CHARS.indexOf(c) < 0) {
+                if (lastAdded == REPLACEMENT_CHAR) {
+                    // do not add several _ in a row
+                    continue;
+                }
+                toAdd = REPLACEMENT_CHAR;
+            }
+
+            sb.append(toAdd);
+            lastAdded = toAdd;
         }
 
-        sb.append(toAdd);
-        lastAdded = toAdd;
-      }
-
-      if(sb.length()==0) {
-        sb.append(REPLACEMENT_CHAR);
-      }
-
-      return sb.toString();
-    }
-
-    /**
-     * Filter the node name for any invalid character and replace
-     * invalid characters with {@link #REPLACEMENT_CHAR}.
-     * @param nameHint The hint for the node name.
-     * @return A valid node name.
-     */
-    public static String filterName(final String nameHint) {
-        final StringBuffer sb  = new StringBuffer(nameHint.length());
-        final int len = nameHint.length();
-        for (int i = 0; i < len; i++) {
-            char c = nameHint.charAt(i);
-            if (Character.isWhitespace(c)
-                || c == ':' || c == '/'
-                || c == '[' || c == ']'
-                || c == '*' || c == '\'' || c == '\"') {
-                c = REPLACEMENT_CHAR;
-            }
-            sb.append(c);
+        if (sb.length()==0) {
+            sb.append(REPLACEMENT_CHAR);
         }
+
         return sb.toString();
     }
 }

Modified: incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameGenerator.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameGenerator.java?rev=648198&r1=648197&r2=648198&view=diff
==============================================================================
--- incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameGenerator.java (original)
+++ incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/NodeNameGenerator.java Tue Apr 15 02:49:14 2008
@@ -22,9 +22,10 @@
 import org.apache.sling.api.request.RequestParameter;
 import org.apache.sling.api.request.RequestParameterMap;
 
-/** Generates a node name based on a set of well-known request parameters
- *  like title, description, etc.
- *  See SLING-128.
+/**
+ * Generates a node name based on a set of well-known request parameters
+ * like title, description, etc.
+ * See SLING-128.
  */
 public class NodeNameGenerator {
 
@@ -78,12 +79,20 @@
         // find the first request parameter that matches one of
         // our parameterNames, in order, and has a value
         if (parameters!=null) {
-            // we first check for the special sling parameter
-            final RequestParameter specialParam = parameters.getValue(SlingPostServlet.RP_NODE_NAME_HINT);
+            // we first check for the special sling parameters
+            RequestParameter specialParam = parameters.getValue(SlingPostServlet.RP_NODE_NAME);
             if ( specialParam != null ) {
                 if ( specialParam.getString() != null && specialParam.getString().length() > 0 ) {
-                    valueToUse = NodeNameFilter.filterName(specialParam.getString());
+                    valueToUse = specialParam.getString();
                     doFilter = false;
+                }
+            }
+            if ( valueToUse == null ) {
+                specialParam = parameters.getValue(SlingPostServlet.RP_NODE_NAME_HINT);
+                if ( specialParam != null ) {
+                    if ( specialParam.getString() != null && specialParam.getString().length() > 0 ) {
+                        valueToUse = specialParam.getString();
+                    }
                 }
             }
 

Modified: incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java?rev=648198&r1=648197&r2=648198&view=diff
==============================================================================
--- incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java (original)
+++ incubator/sling/trunk/sling/servlets-post/src/main/java/org/apache/sling/servlets/post/impl/SlingPostServlet.java Tue Apr 15 02:49:14 2008
@@ -103,6 +103,11 @@
     public static final String MOVE_FLAG_REPLACE = "replace";
 
     /**
+     * Optional request paramter specifying a node name for a newly created node.
+     */
+    public static final String RP_NODE_NAME = RP_PREFIX + "name";
+
+    /**
      * Optional request paramter specifying a node hint for a newly created node.
      */
     public static final String RP_NODE_NAME_HINT = RP_PREFIX + "nameHint";