You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by Felix Meschberger <fm...@gmail.com> on 2010/05/21 19:05:25 UTC
Re: svn commit: r946216 - in /sling/trunk: bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/
bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/
bundles/servlets/post/src/main/java/org/apache/sling/servlets/pos...
Hi,
On 19.05.2010 17:18, justin@apache.org wrote:
> Author: justin
> Date: Wed May 19 15:18:11 2010
> New Revision: 946216
>
> URL: http://svn.apache.org/viewvc?rev=946216&view=rev
> Log:
> SLING-649 - adding support for @UseDefaultWhenMissing
>
>
> Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java
> URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java?rev=946216&r1=946215&r2=946216&view=diff
> ==============================================================================
> --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java (original)
> +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java Wed May 19 15:18:11 2010
> @@ -340,4 +340,10 @@ public interface SlingPostConstants {
> * ignored.
> */
> public static final String SUFFIX_IGNORE_BLANKS = "@IgnoreBlanks";
> +
> + /**
> + * Suffix indicating that the default value should be used when the property
> + * is not defined. By default the default value is only used when
... incomplete sentence ??
Regards
Felix
> + */
> + public static final String SUFFIX_USE_DEFAULT_WHEN_MISSING = "@UseDefaultWhenMissing";
> }
>
> Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/RequestProperty.java
> URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/RequestProperty.java?rev=946216&r1=946215&r2=946216&view=diff
> ==============================================================================
> --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/RequestProperty.java (original)
> +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/RequestProperty.java Wed May 19 15:18:11 2010
> @@ -17,7 +17,6 @@
> package org.apache.sling.servlets.post.impl.helper;
>
> import java.util.ArrayList;
> -import java.util.Arrays;
> import java.util.List;
>
> import org.apache.sling.api.request.RequestParameter;
> @@ -62,6 +61,8 @@ public class RequestProperty {
>
> private boolean ignoreBlanks;
>
> + private boolean useDefaultWhenMissing;
> +
> public RequestProperty(String path) {
> assert path.startsWith("/");
> this.path = ResourceUtil.normalize(path);
> @@ -100,10 +101,14 @@ public class RequestProperty {
> }
>
> public boolean hasValues() {
> - if (ignoreBlanks) {
> - return values != null && getStringValues().length > 0;
> + if (useDefaultWhenMissing && defaultValues != null && defaultValues.length > 0) {
> + return true;
> } else {
> - return values != null;
> + if (ignoreBlanks) {
> + return (values != null && getStringValues().length > 0);
> + } else {
> + return values != null;
> + }
> }
> }
>
> @@ -128,7 +133,7 @@ public class RequestProperty {
> }
>
> public boolean isFileUpload() {
> - return !values[0].isFormField();
> + return values != null && !values[0].isFormField();
> }
>
> /**
> @@ -162,7 +167,9 @@ public class RequestProperty {
> */
> public String[] getStringValues() {
> if (stringValues == null) {
> - if (values.length > 1) {
> + if (values == null && useDefaultWhenMissing) {
> + stringValues = new String[] { defaultValues[0].getString() };
> + } else if (values.length > 1) {
> // TODO: how the default values work for MV props is not very
> // clear
> List<String> stringValueList = new ArrayList<String>(values.length);
> @@ -274,4 +281,8 @@ public class RequestProperty {
> public void setIgnoreBlanks(boolean b) {
> ignoreBlanks = b;
> }
> +
> + public void setUseDefaultWhenMissing(boolean b) {
> + useDefaultWhenMissing = b;
> + }
> }
> \ No newline at end of file
>
> Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java
> URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java?rev=946216&r1=946215&r2=946216&view=diff
> ==============================================================================
> --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java (original)
> +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/operations/ModifyOperation.java Wed May 19 15:18:11 2010
> @@ -611,6 +611,18 @@ public class ModifyOperation extends Abs
> continue;
> }
>
> + if (propPath.endsWith(SlingPostConstants.SUFFIX_USE_DEFAULT_WHEN_MISSING)) {
> + RequestProperty prop = getOrCreateRequestProperty(
> + reqProperties, propPath,
> + SlingPostConstants.SUFFIX_USE_DEFAULT_WHEN_MISSING);
> +
> + if (e.getValue().length == 1) {
> + prop.setUseDefaultWhenMissing(true);
> + }
> +
> + continue;
> + }
> +
> // plain property, create from values
> RequestProperty prop = getOrCreateRequestProperty(reqProperties,
> propPath, null);
>
> Modified: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/SlingDefaultValuesTest.java
> URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/SlingDefaultValuesTest.java?rev=946216&r1=946215&r2=946216&view=diff
> ==============================================================================
> --- sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/SlingDefaultValuesTest.java (original)
> +++ sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/SlingDefaultValuesTest.java Wed May 19 15:18:11 2010
> @@ -74,6 +74,17 @@ public class SlingDefaultValuesTest exte
> assertJavascript("123", content, "out.println(data.a)");
> }
>
> + public void testWithSpecificDefaultAndNoValueField() throws IOException {
> + final Map <String, String> props = new HashMap <String, String> ();
> + props.put("a@DefaultValue","123");
> + props.put("a@UseDefaultWhenMissing","yes");
> +
> + final String createdNodeUrl = testClient.createNode(postUrl + SlingPostConstants.DEFAULT_CREATE_SUFFIX, props);
> + final String content = getContent(createdNodeUrl + ".json", CONTENT_TYPE_JSON);
> +
> + assertJavascript("123", content, "out.println(data.a)");
> + }
> +
> public void testWithIgnore() throws IOException {
> final Map <String, String> props = new HashMap <String, String> ();
> props.put("a","");
>
>
>