Hi, On 19.05.2010 17:18, [email protected] 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",""); > > >
