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";