http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java index 4a227ed..8c7848f 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java @@ -12,7 +12,6 @@ // *************************************************************************************************************************** package org.apache.juneau.urlencoding; -import static org.apache.juneau.serializer.SerializerContext.*; import static org.apache.juneau.urlencoding.UonSerializerContext.*; import java.lang.reflect.*; @@ -179,46 +178,46 @@ public class UonSerializer extends WriterSerializer { public static final UonSerializer DEFAULT_SIMPLE_ENCODING = new SimpleEncoding().lock(); /** - * Equivalent to <code><jk>new</jk> UonSerializer().setProperty(UonSerializerContext.<jsf>UON_simpleMode</jsf>,<jk>true</jk>);</code>. + * Equivalent to <code><jk>new</jk> UonSerializer().setSimpleMode(<jk>true</jk>);</code>. */ @Produces(value="text/uon-simple",contentType="text/uon") public static class Simple extends UonSerializer { /** Constructor */ public Simple() { - setProperty(UON_simpleMode, true); + setSimpleMode(true); } } /** - * Equivalent to <code><jk>new</jk> UonSerializer().setProperty(UonSerializerContext.<jsf>UON_useWhitespace</jsf>,<jk>true</jk>);</code>. + * Equivalent to <code><jk>new</jk> UonSerializer().setUseWhitespace(<jk>true</jk>).setUseIndentation(<jk>true</jk>);</code>. */ public static class Readable extends UonSerializer { /** Constructor */ public Readable() { - setProperty(UON_useWhitespace, true); - setProperty(SERIALIZER_useIndentation, true); + setUseWhitespace(true); + setUseIndentation(true); } } /** - * Equivalent to <code><jk>new</jk> UonSerializer().setProperty(UonSerializerContext.<jsf>UON_encodeChars</jsf>,<jk>true</jk>);</code>. + * Equivalent to <code><jk>new</jk> UonSerializer().setEncodeChars(<jk>true</jk>);</code>. */ public static class Encoding extends UonSerializer { /** Constructor */ public Encoding() { - setProperty(UON_encodeChars, true); + setEncodeChars(true); } } /** - * Equivalent to <code><jk>new</jk> UonSerializer().setProperty(UonSerializerContext.<jsf>UON_simpleMode</jsf>,<jk>true</jk>).setProperty(UonSerializerContext.<jsf>UON_encodeChars</jsf>,<jk>true</jk>);</code>. + * Equivalent to <code><jk>new</jk> UonSerializer().setSimpleMode(<jk>true</jk>).setEncodeChars(<jk>true</jk>);</code>. */ @Produces(value="text/uon-simple",contentType="text/uon") public static class SimpleEncoding extends UonSerializer { /** Constructor */ public SimpleEncoding() { - setProperty(UON_simpleMode, true); - setProperty(UON_encodeChars, true); + setSimpleMode(true); + setEncodeChars(true); } } @@ -397,8 +396,9 @@ public class UonSerializer extends WriterSerializer { return out; } + //-------------------------------------------------------------------------------- - // Overridden methods + // Entry point methods //-------------------------------------------------------------------------------- @Override /* Serializer */ @@ -412,49 +412,604 @@ public class UonSerializer extends WriterSerializer { serializeAnything(s, s.getWriter(), o, null, "root", null, false, true); } + + //-------------------------------------------------------------------------------- + // Properties + //-------------------------------------------------------------------------------- + + /** + * <b>Configuration property:</b> Use simplified output. + * <p> + * <ul> + * <li><b>Name:</b> <js>"UonSerializer.simpleMode"</js> + * <li><b>Data type:</b> <code>Boolean</code> + * <li><b>Default:</b> <jk>false</jk> + * <li><b>Session-overridable:</b> <jk>true</jk> + * </ul> + * <p> + * If <jk>true</jk>, type flags will not be prepended to values in most cases. + * <p> + * Use this setting if the data types of the values (e.g. object/array/boolean/number/string) + * is known on the receiving end. + * <p> + * It should be noted that the default behavior produces a data structure that can + * be losslessly converted into JSON, and any JSON can be losslessly represented + * in a URL-encoded value. However, this strict equivalency does not exist + * when simple mode is used. + * <p> + * <table class='styled'> + * <tr> + * <th>Input (in JSON)</th> + * <th>Normal mode output</th> + * <th>Simple mode output</th> + * </tr> + * <tr> + * <td class='code'>{foo:'bar',baz:'bing'}</td> + * <td class='code'>$o(foo=bar,baz=bing)</td> + * <td class='code'>(foo=bar,baz=bing)</td> + * </tr> + * <tr> + * <td class='code'>{foo:{bar:'baz'}}</td> + * <td class='code'>$o(foo=$o(bar=baz))</td> + * <td class='code'>(foo=(bar=baz))</td> + * </tr> + * <tr> + * <td class='code'>['foo','bar']</td> + * <td class='code'>$a(foo,bar)</td> + * <td class='code'>(foo,bar)</td> + * </tr> + * <tr> + * <td class='code'>['foo',['bar','baz']]</td> + * <td class='code'>$a(foo,$a(bar,baz))</td> + * <td class='code'>(foo,(bar,baz))</td> + * </tr> + * <tr> + * <td class='code'>true</td> + * <td class='code'>$b(true)</td> + * <td class='code'>true</td> + * </tr> + * <tr> + * <td class='code'>123</td> + * <td class='code'>$n(123)</td> + * <td class='code'>123</td> + * </tr> + * </table> + * <p> + * <h5 class='section'>Notes:</h5> + * <ul> + * <li>This is equivalent to calling <code>setProperty(<jsf>UON_simpleMode</jsf>, value)</code>. + * <li>This introduces a slight performance penalty. + * </ul> + * + * @param value The new value for this property. + * @return This object (for method chaining). + * @throws LockedException If {@link #lock()} was called on this class. + * @see UonSerializerContext#UON_simpleMode + */ + public UonSerializer setSimpleMode(boolean value) throws LockedException { + return setProperty(UON_simpleMode, value); + } + + /** + * <b>Configuration property:</b> Use whitespace. + * <p> + * <ul> + * <li><b>Name:</b> <js>"UonSerializer.useWhitespace"</js> + * <li><b>Data type:</b> <code>Boolean</code> + * <li><b>Default:</b> <jk>false</jk> + * <li><b>Session-overridable:</b> <jk>true</jk> + * </ul> + * <p> + * If <jk>true</jk>, whitespace is added to the output to improve readability. + * <p> + * <h5 class='section'>Notes:</h5> + * <ul> + * <li>This is equivalent to calling <code>setProperty(<jsf>UON_useWhitespace</jsf>, value)</code>. + * <li>This introduces a slight performance penalty. + * </ul> + * + * @param value The new value for this property. + * @return This object (for method chaining). + * @throws LockedException If {@link #lock()} was called on this class. + * @see UonSerializerContext#UON_useWhitespace + */ + public UonSerializer setUseWhitespace(boolean value) throws LockedException { + return setProperty(UON_useWhitespace, value); + } + + /** + * <b>Configuration property:</b> Encode non-valid URI characters. + * <p> + * <ul> + * <li><b>Name:</b> <js>"UonSerializer.encodeChars"</js> + * <li><b>Data type:</b> <code>Boolean</code> + * <li><b>Default:</b> <jk>false</jk> for {@link UonSerializer}, <jk>true</jk> for {@link UrlEncodingSerializer} + * <li><b>Session-overridable:</b> <jk>true</jk> + * </ul> + * <p> + * Encode non-valid URI characters with <js>"%xx"</js> constructs. + * <p> + * If <jk>true</jk>, non-valid URI characters will be converted to <js>"%xx"</js> sequences. + * Set to <jk>false</jk> if parameter value is being passed to some other code that will already + * perform URL-encoding of non-valid URI characters. + * <p> + * <h5 class='section'>Notes:</h5> + * <ul> + * <li>This is equivalent to calling <code>setProperty(<jsf>UON_encodeChars</jsf>, value)</code>. + * <li>This introduces a slight performance penalty. + * </ul> + * + * @param value The new value for this property. + * @return This object (for method chaining). + * @throws LockedException If {@link #lock()} was called on this class. + * @see UonSerializerContext#UON_encodeChars + */ + public UonSerializer setEncodeChars(boolean value) throws LockedException { + return setProperty(UON_encodeChars, value); + } + + @Override /* Serializer */ + public UonSerializer setMaxDepth(int value) throws LockedException { + super.setMaxDepth(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setInitialDepth(int value) throws LockedException { + super.setInitialDepth(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setDetectRecursions(boolean value) throws LockedException { + super.setDetectRecursions(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setIgnoreRecursions(boolean value) throws LockedException { + super.setIgnoreRecursions(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setUseIndentation(boolean value) throws LockedException { + super.setUseIndentation(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setAddBeanTypeProperties(boolean value) throws LockedException { + super.setAddBeanTypeProperties(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setQuoteChar(char value) throws LockedException { + super.setQuoteChar(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setTrimNullProperties(boolean value) throws LockedException { + super.setTrimNullProperties(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setTrimEmptyCollections(boolean value) throws LockedException { + super.setTrimEmptyCollections(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setTrimEmptyMaps(boolean value) throws LockedException { + super.setTrimEmptyMaps(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setTrimStrings(boolean value) throws LockedException { + super.setTrimStrings(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setRelativeUriBase(String value) throws LockedException { + super.setRelativeUriBase(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setAbsolutePathUriBase(String value) throws LockedException { + super.setAbsolutePathUriBase(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setSortCollections(boolean value) throws LockedException { + super.setSortCollections(value); + return this; + } + + @Override /* Serializer */ + public UonSerializer setSortMaps(boolean value) throws LockedException { + super.setSortMaps(value); + return this; + } + @Override /* CoreApi */ - public UonSerializer setProperty(String property, Object value) throws LockedException { - super.setProperty(property, value); + public UonSerializer setBeansRequireDefaultConstructor(boolean value) throws LockedException { + super.setBeansRequireDefaultConstructor(value); return this; } @Override /* CoreApi */ - public UonSerializer setProperties(ObjectMap properties) throws LockedException { - super.setProperties(properties); + public UonSerializer setBeansRequireSerializable(boolean value) throws LockedException { + super.setBeansRequireSerializable(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeansRequireSettersForGetters(boolean value) throws LockedException { + super.setBeansRequireSettersForGetters(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeansRequireSomeProperties(boolean value) throws LockedException { + super.setBeansRequireSomeProperties(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanMapPutReturnsOldValue(boolean value) throws LockedException { + super.setBeanMapPutReturnsOldValue(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanConstructorVisibility(Visibility value) throws LockedException { + super.setBeanConstructorVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanClassVisibility(Visibility value) throws LockedException { + super.setBeanClassVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanFieldVisibility(Visibility value) throws LockedException { + super.setBeanFieldVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setMethodVisibility(Visibility value) throws LockedException { + super.setMethodVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setUseJavaBeanIntrospector(boolean value) throws LockedException { + super.setUseJavaBeanIntrospector(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setUseInterfaceProxies(boolean value) throws LockedException { + super.setUseInterfaceProxies(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setIgnoreUnknownBeanProperties(boolean value) throws LockedException { + super.setIgnoreUnknownBeanProperties(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setIgnoreUnknownNullBeanProperties(boolean value) throws LockedException { + super.setIgnoreUnknownNullBeanProperties(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setIgnorePropertiesWithoutSetters(boolean value) throws LockedException { + super.setIgnorePropertiesWithoutSetters(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setIgnoreInvocationExceptionsOnGetters(boolean value) throws LockedException { + super.setIgnoreInvocationExceptionsOnGetters(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setIgnoreInvocationExceptionsOnSetters(boolean value) throws LockedException { + super.setIgnoreInvocationExceptionsOnSetters(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setSortProperties(boolean value) throws LockedException { + super.setSortProperties(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setNotBeanPackages(String...values) throws LockedException { + super.setNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setNotBeanPackages(Collection<String> values) throws LockedException { + super.setNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addNotBeanPackages(String...values) throws LockedException { + super.addNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addNotBeanPackages(Collection<String> values) throws LockedException { + super.addNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeNotBeanPackages(String...values) throws LockedException { + super.removeNotBeanPackages(values); return this; } @Override /* CoreApi */ - public UonSerializer addNotBeanClasses(Class<?>...classes) throws LockedException { - super.addNotBeanClasses(classes); + public UonSerializer removeNotBeanPackages(Collection<String> values) throws LockedException { + super.removeNotBeanPackages(values); return this; } @Override /* CoreApi */ - public UonSerializer addBeanFilters(Class<?>...classes) throws LockedException { - super.addBeanFilters(classes); + public UonSerializer setNotBeanClasses(Class<?>...values) throws LockedException { + super.setNotBeanClasses(values); return this; } @Override /* CoreApi */ - public UonSerializer addPojoSwaps(Class<?>...classes) throws LockedException { - super.addPojoSwaps(classes); + public UonSerializer setNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.setNotBeanClasses(values); return this; } @Override /* CoreApi */ - public UonSerializer addToDictionary(Class<?>...classes) throws LockedException { - super.addToDictionary(classes); + public UonSerializer addNotBeanClasses(Class<?>...values) throws LockedException { + super.addNotBeanClasses(values); return this; } @Override /* CoreApi */ - public <T> UonSerializer addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { + public UonSerializer addNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.addNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeNotBeanClasses(Class<?>...values) throws LockedException { + super.removeNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.removeNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanFilters(Class<?>...values) throws LockedException { + super.setBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanFilters(Collection<Class<?>> values) throws LockedException { + super.setBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addBeanFilters(Class<?>...values) throws LockedException { + super.addBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addBeanFilters(Collection<Class<?>> values) throws LockedException { + super.addBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeBeanFilters(Class<?>...values) throws LockedException { + super.removeBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeBeanFilters(Collection<Class<?>> values) throws LockedException { + super.removeBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setPojoSwaps(Class<?>...values) throws LockedException { + super.setPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setPojoSwaps(Collection<Class<?>> values) throws LockedException { + super.setPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addPojoSwaps(Class<?>...values) throws LockedException { + super.addPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addPojoSwaps(Collection<Class<?>> values) throws LockedException { + super.addPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removePojoSwaps(Class<?>...values) throws LockedException { + super.removePojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removePojoSwaps(Collection<Class<?>> values) throws LockedException { + super.removePojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setImplClasses(Map<Class<?>,Class<?>> values) throws LockedException { + super.setImplClasses(values); + return this; + } + + @Override /* CoreApi */ + public <T> CoreApi addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { super.addImplClass(interfaceClass, implClass); return this; } @Override /* CoreApi */ + public UonSerializer setBeanDictionary(Class<?>...values) throws LockedException { + super.setBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.setBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addToBeanDictionary(Class<?>...values) throws LockedException { + super.addToBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addToBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.addToBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeFromBeanDictionary(Class<?>...values) throws LockedException { + super.removeFromBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeFromBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.removeFromBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setBeanTypePropertyName(String value) throws LockedException { + super.setBeanTypePropertyName(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setDefaultParser(Class<?> value) throws LockedException { + super.setDefaultParser(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setLocale(Locale value) throws LockedException { + super.setLocale(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setTimeZone(TimeZone value) throws LockedException { + super.setTimeZone(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setMediaType(MediaType value) throws LockedException { + super.setMediaType(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setDebug(boolean value) throws LockedException { + super.setDebug(value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setProperty(String name, Object value) throws LockedException { + super.setProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer setProperties(ObjectMap properties) throws LockedException { + super.setProperties(properties); + return this; + } + + @Override /* CoreApi */ + public UonSerializer addToProperty(String name, Object value) throws LockedException { + super.addToProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer putToProperty(String name, Object key, Object value) throws LockedException { + super.putToProperty(name, key, value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer putToProperty(String name, Object value) throws LockedException { + super.putToProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UonSerializer removeFromProperty(String name, Object value) throws LockedException { + super.removeFromProperty(name, value); + return this; + } + + + //-------------------------------------------------------------------------------- + // Overridden methods + //-------------------------------------------------------------------------------- + + @Override /* CoreApi */ public UonSerializer setClassLoader(ClassLoader classLoader) throws LockedException { super.setClassLoader(classLoader); return this;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java index 5c7e30e..db0cb2f 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java @@ -21,45 +21,8 @@ import org.apache.juneau.serializer.*; * Context properties are set by calling {@link ContextFactory#setProperty(String, Object)} on the context factory * returned {@link CoreApi#getContextFactory()}. * <p> - * The following convenience methods are also provided for setting context properties: - * <ul> - * <li>{@link UonSerializer#setProperty(String,Object)} - * <li>{@link UonSerializer#setProperties(ObjectMap)} - * <li>{@link UonSerializer#addNotBeanClasses(Class[])} - * <li>{@link UonSerializer#addBeanFilters(Class[])} - * <li>{@link UonSerializer#addPojoSwaps(Class[])} - * <li>{@link UonSerializer#addToDictionary(Class[])} - * <li>{@link UonSerializer#addImplClass(Class,Class)} - * </ul> - * <p> * See {@link ContextFactory} for more information about context properties. * - * <h6 class='topic' id='ConfigProperties'>Configurable properties on the URL-Encoding and UON serializers</h6> - * <table class='styled' style='border-collapse: collapse;'> - * <tr><th>Setting name</th><th>Description</th><th>Data type</th><th>Default value</th><th>Session overridable</th></tr> - * <tr> - * <td>{@link #UON_simpleMode}</td> - * <td>Use simplified output.</td> - * <td><code>Boolean</code></td> - * <td><jk>false</jk></td> - * <td><jk>true</jk></td> - * </tr> - * <tr> - * <td>{@link #UON_useWhitespace}</td> - * <td>Use whitespace.</td> - * <td><code>Boolean</code></td> - * <td><jk>false</jk></td> - * <td><jk>true</jk></td> - * </tr> - * <tr> - * <td>{@link #UON_encodeChars}</td> - * <td>Encode non-valid URI characters.</td> - * <td><code>Boolean</code></td> - * <td><jk>false</jk> for {@link UonSerializer}<br><jk>true</jk> for {@link UrlEncodingSerializer}</td> - * <td><jk>true</jk></td> - * </tr> - * </table> - * * <h5 class='section'>Inherited configurable properties:</h5> * <ul class='javahierarchy'> * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers. http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java index 118b5e8..7025620 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java @@ -192,6 +192,7 @@ public final class UonWriter extends SerializerWriter { return appendObject(s, false, false, isTop); } + //-------------------------------------------------------------------------------- // Overridden methods //-------------------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java index 95fe474..0a0fd5d 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java @@ -34,7 +34,7 @@ public final class UrlEncodingContext implements Cloneable { * } * * UrlEncodingSerializer s1 = <jk>new</jk> UrlEncodingParser(); - * UrlEncodingSerializer s2 = <jk>new</jk> UrlEncodingParser().setProperty(UrlEncodingContext.<jsf>URLENC_expandedParams</jsf>, <jk>true</jk>); + * UrlEncodingSerializer s2 = <jk>new</jk> UrlEncodingParser().setExpandedParams(<jk>true</jk>); * * String s1 = p1.serialize(<jk>new</jk> A()); <jc>// Produces "f1=(a,b)&f2=(c,d)"</jc> * String s2 = p2.serialize(<jk>new</jk> A()); <jc>// Produces "f1=a&f1=b&f2=c&f2=d"</jc> http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java index 2c68e09..460e919 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java @@ -12,7 +12,7 @@ // *************************************************************************************************************************** package org.apache.juneau.urlencoding; -import static org.apache.juneau.urlencoding.UonParserContext.*; +import static org.apache.juneau.urlencoding.UrlEncodingParserContext.*; import java.lang.reflect.*; import java.util.*; @@ -54,13 +54,13 @@ public class UrlEncodingParser extends UonParser { public static final UrlEncodingParser DEFAULT = new UrlEncodingParser().lock(); /** Reusable instance of {@link UrlEncodingParser}. */ - public static final UrlEncodingParser DEFAULT_WS_AWARE = new UrlEncodingParser().setProperty(UON_whitespaceAware, true).lock(); + public static final UrlEncodingParser DEFAULT_WS_AWARE = new UrlEncodingParser().setWhitespaceAware(true).lock(); /** * Constructor. */ public UrlEncodingParser() { - setProperty(UON_decodeChars, true); + setDecodeChars(true); } private <T> T parseAnything(UrlEncodingParserSession session, ClassMeta<T> eType, ParserReader r, Object outer) throws Exception { @@ -501,8 +501,9 @@ public class UrlEncodingParser extends UonParser { } } + //-------------------------------------------------------------------------------- - // Overridden methods + // Entry point methods //-------------------------------------------------------------------------------- @Override /* Parser */ @@ -536,49 +537,469 @@ public class UrlEncodingParser extends UonParser { return m; } + + //-------------------------------------------------------------------------------- + // Properties + //-------------------------------------------------------------------------------- + + /** + * <b>Configuration property:</b> Serialize bean property collections/arrays as separate key/value pairs. + * <p> + * <ul> + * <li><b>Name:</b> <js>"UrlEncoding.expandedParams"</js> + * <li><b>Data type:</b> <code>Boolean</code> + * <li><b>Default:</b> <jk>false</jk> + * <li><b>Session-overridable:</b> <jk>true</jk> + * </ul> + * <p> + * If <jk>false</jk>, serializing the array <code>[1,2,3]</code> results in <code>?key=$a(1,2,3)</code>. + * If <jk>true</jk>, serializing the same array results in <code>?key=1&key=2&key=3</code>. + * + * <h5 class='section'>Example:</h5> + * <p class='bcode'> + * <jk>public class</jk> A { + * <jk>public</jk> String[] f1 = {<js>"a"</js>,<js>"b"</js>}; + * <jk>public</jk> List<String> f2 = <jk>new</jk> LinkedList<String>(Arrays.<jsm>asList</jsm>(<jk>new</jk> String[]{<js>"c"</js>,<js>"d"</js>})); + * } + * + * UrlEncodingSerializer s1 = <jk>new</jk> UrlEncodingParser(); + * UrlEncodingSerializer s2 = <jk>new</jk> UrlEncodingParser().setExpandedParams(<jk>true</jk>); + * + * String s1 = p1.serialize(<jk>new</jk> A()); <jc>// Produces "f1=(a,b)&f2=(c,d)"</jc> + * String s2 = p2.serialize(<jk>new</jk> A()); <jc>// Produces "f1=a&f1=b&f2=c&f2=d"</jc> + * </p> + * <p> + * This option only applies to beans. + * <p> + * <h5 class='section'>Notes:</h5> + * <ul> + * <li>If parsing multi-part parameters, it's highly recommended to use Collections or Lists + * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value + * is added to it. + * </ul> + * <p> + * <h5 class='section'>Notes:</h5> + * <ul> + * <li>This is equivalent to calling <code>setProperty(<jsf>URLENC_expandedParams</jsf>, value)</code>. + * </ul> + * + * @param value The new value for this property. + * @return This object (for method chaining). + * @throws LockedException If {@link #lock()} was called on this class. + * @see UrlEncodingParserContext#URLENC_expandedParams + */ + public UrlEncodingParser setExpandedParams(boolean value) throws LockedException { + return setProperty(URLENC_expandedParams, value); + } + + @Override /* UonParser */ + public UrlEncodingParser setDecodeChars(boolean value) throws LockedException { + super.setDecodeChars(value); + return this; + } + + @Override /* UonParser */ + public UrlEncodingParser setWhitespaceAware(boolean value) throws LockedException { + super.setWhitespaceAware(value); + return this; + } + + @Override /* Parser */ + public UrlEncodingParser setTrimStrings(boolean value) throws LockedException { + super.setTrimStrings(value); + return this; + } + + @Override /* Parser */ + public UrlEncodingParser setStrict(boolean value) throws LockedException { + super.setStrict(value); + return this; + } + + @Override /* Parser */ + public UrlEncodingParser setInputStreamCharset(String value) throws LockedException { + super.setInputStreamCharset(value); + return this; + } + @Override /* Parser */ - public UrlEncodingParser setProperty(String property, Object value) throws LockedException { - super.setProperty(property, value); + public UrlEncodingParser setFileCharset(String value) throws LockedException { + super.setFileCharset(value); return this; } @Override /* CoreApi */ - public UrlEncodingParser setProperties(ObjectMap properties) throws LockedException { - super.setProperties(properties); + public UrlEncodingParser setBeansRequireDefaultConstructor(boolean value) throws LockedException { + super.setBeansRequireDefaultConstructor(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeansRequireSerializable(boolean value) throws LockedException { + super.setBeansRequireSerializable(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeansRequireSettersForGetters(boolean value) throws LockedException { + super.setBeansRequireSettersForGetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeansRequireSomeProperties(boolean value) throws LockedException { + super.setBeansRequireSomeProperties(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanMapPutReturnsOldValue(boolean value) throws LockedException { + super.setBeanMapPutReturnsOldValue(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanConstructorVisibility(Visibility value) throws LockedException { + super.setBeanConstructorVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanClassVisibility(Visibility value) throws LockedException { + super.setBeanClassVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanFieldVisibility(Visibility value) throws LockedException { + super.setBeanFieldVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setMethodVisibility(Visibility value) throws LockedException { + super.setMethodVisibility(value); return this; } @Override /* CoreApi */ - public UrlEncodingParser addNotBeanClasses(Class<?>...classes) throws LockedException { - super.addNotBeanClasses(classes); + public UrlEncodingParser setUseJavaBeanIntrospector(boolean value) throws LockedException { + super.setUseJavaBeanIntrospector(value); return this; } @Override /* CoreApi */ - public UrlEncodingParser addBeanFilters(Class<?>...classes) throws LockedException { - super.addBeanFilters(classes); + public UrlEncodingParser setUseInterfaceProxies(boolean value) throws LockedException { + super.setUseInterfaceProxies(value); return this; } @Override /* CoreApi */ - public UrlEncodingParser addPojoSwaps(Class<?>...classes) throws LockedException { - super.addPojoSwaps(classes); + public UrlEncodingParser setIgnoreUnknownBeanProperties(boolean value) throws LockedException { + super.setIgnoreUnknownBeanProperties(value); return this; } @Override /* CoreApi */ - public UrlEncodingParser addToDictionary(Class<?>...classes) throws LockedException { - super.addToDictionary(classes); + public UrlEncodingParser setIgnoreUnknownNullBeanProperties(boolean value) throws LockedException { + super.setIgnoreUnknownNullBeanProperties(value); return this; } @Override /* CoreApi */ - public <T> UrlEncodingParser addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { + public UrlEncodingParser setIgnorePropertiesWithoutSetters(boolean value) throws LockedException { + super.setIgnorePropertiesWithoutSetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setIgnoreInvocationExceptionsOnGetters(boolean value) throws LockedException { + super.setIgnoreInvocationExceptionsOnGetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setIgnoreInvocationExceptionsOnSetters(boolean value) throws LockedException { + super.setIgnoreInvocationExceptionsOnSetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setSortProperties(boolean value) throws LockedException { + super.setSortProperties(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setNotBeanPackages(String...values) throws LockedException { + super.setNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setNotBeanPackages(Collection<String> values) throws LockedException { + super.setNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addNotBeanPackages(String...values) throws LockedException { + super.addNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addNotBeanPackages(Collection<String> values) throws LockedException { + super.addNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeNotBeanPackages(String...values) throws LockedException { + super.removeNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeNotBeanPackages(Collection<String> values) throws LockedException { + super.removeNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setNotBeanClasses(Class<?>...values) throws LockedException { + super.setNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.setNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addNotBeanClasses(Class<?>...values) throws LockedException { + super.addNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.addNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeNotBeanClasses(Class<?>...values) throws LockedException { + super.removeNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.removeNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanFilters(Class<?>...values) throws LockedException { + super.setBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanFilters(Collection<Class<?>> values) throws LockedException { + super.setBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addBeanFilters(Class<?>...values) throws LockedException { + super.addBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addBeanFilters(Collection<Class<?>> values) throws LockedException { + super.addBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeBeanFilters(Class<?>...values) throws LockedException { + super.removeBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeBeanFilters(Collection<Class<?>> values) throws LockedException { + super.removeBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setPojoSwaps(Class<?>...values) throws LockedException { + super.setPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setPojoSwaps(Collection<Class<?>> values) throws LockedException { + super.setPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addPojoSwaps(Class<?>...values) throws LockedException { + super.addPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addPojoSwaps(Collection<Class<?>> values) throws LockedException { + super.addPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removePojoSwaps(Class<?>...values) throws LockedException { + super.removePojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removePojoSwaps(Collection<Class<?>> values) throws LockedException { + super.removePojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setImplClasses(Map<Class<?>,Class<?>> values) throws LockedException { + super.setImplClasses(values); + return this; + } + + @Override /* CoreApi */ + public <T> CoreApi addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { super.addImplClass(interfaceClass, implClass); return this; } @Override /* CoreApi */ + public UrlEncodingParser setBeanDictionary(Class<?>...values) throws LockedException { + super.setBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.setBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addToBeanDictionary(Class<?>...values) throws LockedException { + super.addToBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addToBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.addToBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeFromBeanDictionary(Class<?>...values) throws LockedException { + super.removeFromBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeFromBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.removeFromBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setBeanTypePropertyName(String value) throws LockedException { + super.setBeanTypePropertyName(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setDefaultParser(Class<?> value) throws LockedException { + super.setDefaultParser(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setLocale(Locale value) throws LockedException { + super.setLocale(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setTimeZone(TimeZone value) throws LockedException { + super.setTimeZone(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setMediaType(MediaType value) throws LockedException { + super.setMediaType(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setDebug(boolean value) throws LockedException { + super.setDebug(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setProperty(String name, Object value) throws LockedException { + super.setProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser setProperties(ObjectMap properties) throws LockedException { + super.setProperties(properties); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser addToProperty(String name, Object value) throws LockedException { + super.addToProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser putToProperty(String name, Object key, Object value) throws LockedException { + super.putToProperty(name, key, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser putToProperty(String name, Object value) throws LockedException { + super.putToProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingParser removeFromProperty(String name, Object value) throws LockedException { + super.removeFromProperty(name, value); + return this; + } + + + //-------------------------------------------------------------------------------- + // Overridden methods + //-------------------------------------------------------------------------------- + + @Override /* CoreApi */ public UrlEncodingParser setClassLoader(ClassLoader classLoader) throws LockedException { super.setClassLoader(classLoader); return this; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java index fa13729..20b33e3 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java @@ -20,30 +20,7 @@ import org.apache.juneau.*; * Context properties are set by calling {@link ContextFactory#setProperty(String, Object)} on the context factory * returned {@link CoreApi#getContextFactory()}. * <p> - * The following convenience methods are also provided for setting context properties: - * <ul> - * <li>{@link UrlEncodingParser#setProperty(String,Object)} - * <li>{@link UrlEncodingParser#setProperties(ObjectMap)} - * <li>{@link UrlEncodingParser#addNotBeanClasses(Class[])} - * <li>{@link UrlEncodingParser#addBeanFilters(Class[])} - * <li>{@link UrlEncodingParser#addPojoSwaps(Class[])} - * <li>{@link UrlEncodingParser#addToDictionary(Class[])} - * <li>{@link UrlEncodingParser#addImplClass(Class,Class)} - * </ul> - * <p> * See {@link ContextFactory} for more information about context properties. - * - * <h6 class='topic' id='ConfigProperties'>Configurable properties on the URL-Encoding parser</h6> - * <table class='styled' style='border-collapse: collapse;'> - * <tr><th>Setting name</th><th>Description</th><th>Data type</th><th>Default value</th><th>Session overridable</th></tr> - * <tr> - * <td>{@link #URLENC_expandedParams}</td> - * <td>Serialize bean property collections/arrays as separate key/value pairs.</td> - * <td><code>Boolean</code></td> - * <td><jk>false</jk></td> - * <td><jk>true</jk></td> - * </tr> - * </table> */ public class UrlEncodingParserContext extends UonParserContext { @@ -68,7 +45,7 @@ public class UrlEncodingParserContext extends UonParserContext { * } * * UrlEncodingSerializer s1 = <jk>new</jk> UrlEncodingParser(); - * UrlEncodingSerializer s2 = <jk>new</jk> UrlEncodingParser().setProperty(UrlEncodingContext.<jsf>URLENC_expandedParams</jsf>, <jk>true</jk>); + * UrlEncodingSerializer s2 = <jk>new</jk> UrlEncodingParser().setExpandedParams(<jk>true</jk>); * * String s1 = p1.serialize(<jk>new</jk> A()); <jc>// Produces "f1=(a,b)&f2=(c,d)"</jc> * String s2 = p2.serialize(<jk>new</jk> A()); <jc>// Produces "f1=a&f1=b&f2=c&f2=d"</jc> http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java index 6bb81d5..232ce6b 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java @@ -12,7 +12,6 @@ // *************************************************************************************************************************** package org.apache.juneau.urlencoding; -import static org.apache.juneau.urlencoding.UonSerializerContext.*; import static org.apache.juneau.urlencoding.UrlEncodingSerializerContext.*; import java.io.*; @@ -179,38 +178,38 @@ public class UrlEncodingSerializer extends UonSerializer { * Constructor. */ public UrlEncodingSerializer() { - setProperty(UON_encodeChars, true); + setEncodeChars(true); } /** - * Equivalent to <code><jk>new</jk> UrlEncodingSerializer().setProperty(UonSerializerContext.<jsf>UON_simpleMode</jsf>,<jk>true</jk>);</code>. + * Equivalent to <code><jk>new</jk> UrlEncodingSerializer().setSimpleMode(<jk>true</jk>);</code>. */ @Produces(value="application/x-www-form-urlencoded-simple",contentType="application/x-www-form-urlencoded") public static class Simple extends UrlEncodingSerializer { /** Constructor */ public Simple() { - setProperty(UON_simpleMode, true); + setSimpleMode(true); } } /** - * Equivalent to <code><jk>new</jk> UrlEncodingSerializer().setProperty(UonSerializerContext.<jsf>UON_simpleMode</jsf>,<jk>true</jk>).setProperty(UonSerializerContext.<jsf>URLENC_expandedParams</jsf>,<jk>true</jk>);</code>. + * Equivalent to <code><jk>new</jk> UrlEncodingSerializer().setSimpleMode(<jk>true</jk>).setExpandedParams(<jk>true</jk>);</code>. */ @Produces(value="application/x-www-form-urlencoded-simple",contentType="application/x-www-form-urlencoded") public static class SimpleExpanded extends Simple { /** Constructor */ public SimpleExpanded() { - setProperty(URLENC_expandedParams, true); + setExpandedParams(true); } } /** - * Equivalent to <code><jk>new</jk> UrlEncodingSerializer().setProperty(UonSerializerContext.<jsf>UON_useWhitespace</jsf>,<jk>true</jk>);</code>. + * Equivalent to <code><jk>new</jk> UrlEncodingSerializer().setUseWhitespace(<jk>true</jk>);</code>. */ public static class Readable extends UrlEncodingSerializer { /** Constructor */ public Readable() { - setProperty(UON_useWhitespace, true); + setUseWhitespace(true); } } @@ -359,6 +358,7 @@ public class UrlEncodingSerializer extends UonSerializer { return out; } + //-------------------------------------------------------------------------------- // Methods for constructing individual parameter values. //-------------------------------------------------------------------------------- @@ -390,7 +390,7 @@ public class UrlEncodingSerializer extends UonSerializer { //-------------------------------------------------------------------------------- - // Overridden methods + // Entry point methods //-------------------------------------------------------------------------------- @Override /* Serializer */ @@ -404,49 +404,542 @@ public class UrlEncodingSerializer extends UonSerializer { serializeAnything(s, s.getWriter(), o); } + + //-------------------------------------------------------------------------------- + // Properties + //-------------------------------------------------------------------------------- + + /** + * <b>Configuration property:</b> Serialize bean property collections/arrays as separate key/value pairs. + * <p> + * <ul> + * <li><b>Name:</b> <js>"UrlEncoding.expandedParams"</js> + * <li><b>Data type:</b> <code>Boolean</code> + * <li><b>Default:</b> <jk>false</jk> + * <li><b>Session-overridable:</b> <jk>true</jk> + * </ul> + * <p> + * If <jk>false</jk>, serializing the array <code>[1,2,3]</code> results in <code>?key=$a(1,2,3)</code>. + * If <jk>true</jk>, serializing the same array results in <code>?key=1&key=2&key=3</code>. + * + * <h5 class='section'>Example:</h5> + * <p class='bcode'> + * <jk>public class</jk> A { + * <jk>public</jk> String[] f1 = {<js>"a"</js>,<js>"b"</js>}; + * <jk>public</jk> List<String> f2 = <jk>new</jk> LinkedList<String>(Arrays.<jsm>asList</jsm>(<jk>new</jk> String[]{<js>"c"</js>,<js>"d"</js>})); + * } + * + * UrlEncodingSerializer s1 = <jk>new</jk> UrlEncodingParser(); + * UrlEncodingSerializer s2 = <jk>new</jk> UrlEncodingParser().setExpandedParams(<jk>true</jk>); + * + * String s1 = p1.serialize(<jk>new</jk> A()); <jc>// Produces "f1=(a,b)&f2=(c,d)"</jc> + * String s2 = p2.serialize(<jk>new</jk> A()); <jc>// Produces "f1=a&f1=b&f2=c&f2=d"</jc> + * </p> + * <p> + * This option only applies to beans. + * <p> + * <h5 class='section'>Notes:</h5> + * <ul> + * <li>If parsing multi-part parameters, it's highly recommended to use Collections or Lists + * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value + * is added to it. + * </ul> + * <p> + * <h5 class='section'>Notes:</h5> + * <ul> + * <li>This is equivalent to calling <code>setProperty(<jsf>URLENC_expandedParams</jsf>, value)</code>. + * <li>This introduces a slight performance penalty. + * </ul> + * + * @param value The new value for this property. + * @return This object (for method chaining). + * @throws LockedException If {@link #lock()} was called on this class. + * @see UrlEncodingSerializerContext#URLENC_expandedParams + */ + public UrlEncodingSerializer setExpandedParams(boolean value) throws LockedException { + return setProperty(URLENC_expandedParams, value); + } + + @Override /* UonSerializer */ + public UrlEncodingSerializer setSimpleMode(boolean value) throws LockedException { + super.setSimpleMode(value); + return this; + } + + @Override /* UonSerializer */ + public UrlEncodingSerializer setUseWhitespace(boolean value) throws LockedException { + super.setUseWhitespace(value); + return this; + } + + @Override /* UonSerializer */ + public UrlEncodingSerializer setEncodeChars(boolean value) throws LockedException { + super.setEncodeChars(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setMaxDepth(int value) throws LockedException { + super.setMaxDepth(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setInitialDepth(int value) throws LockedException { + super.setInitialDepth(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setDetectRecursions(boolean value) throws LockedException { + super.setDetectRecursions(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setIgnoreRecursions(boolean value) throws LockedException { + super.setIgnoreRecursions(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setUseIndentation(boolean value) throws LockedException { + super.setUseIndentation(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setAddBeanTypeProperties(boolean value) throws LockedException { + super.setAddBeanTypeProperties(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setQuoteChar(char value) throws LockedException { + super.setQuoteChar(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setTrimNullProperties(boolean value) throws LockedException { + super.setTrimNullProperties(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setTrimEmptyCollections(boolean value) throws LockedException { + super.setTrimEmptyCollections(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setTrimEmptyMaps(boolean value) throws LockedException { + super.setTrimEmptyMaps(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setTrimStrings(boolean value) throws LockedException { + super.setTrimStrings(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setRelativeUriBase(String value) throws LockedException { + super.setRelativeUriBase(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setAbsolutePathUriBase(String value) throws LockedException { + super.setAbsolutePathUriBase(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setSortCollections(boolean value) throws LockedException { + super.setSortCollections(value); + return this; + } + + @Override /* Serializer */ + public UrlEncodingSerializer setSortMaps(boolean value) throws LockedException { + super.setSortMaps(value); + return this; + } + @Override /* CoreApi */ - public UrlEncodingSerializer setProperty(String property, Object value) throws LockedException { - super.setProperty(property, value); + public UrlEncodingSerializer setBeansRequireDefaultConstructor(boolean value) throws LockedException { + super.setBeansRequireDefaultConstructor(value); return this; } @Override /* CoreApi */ - public UrlEncodingSerializer setProperties(ObjectMap properties) throws LockedException { - super.setProperties(properties); + public UrlEncodingSerializer setBeansRequireSerializable(boolean value) throws LockedException { + super.setBeansRequireSerializable(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeansRequireSettersForGetters(boolean value) throws LockedException { + super.setBeansRequireSettersForGetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeansRequireSomeProperties(boolean value) throws LockedException { + super.setBeansRequireSomeProperties(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeanMapPutReturnsOldValue(boolean value) throws LockedException { + super.setBeanMapPutReturnsOldValue(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeanConstructorVisibility(Visibility value) throws LockedException { + super.setBeanConstructorVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeanClassVisibility(Visibility value) throws LockedException { + super.setBeanClassVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeanFieldVisibility(Visibility value) throws LockedException { + super.setBeanFieldVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setMethodVisibility(Visibility value) throws LockedException { + super.setMethodVisibility(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setUseJavaBeanIntrospector(boolean value) throws LockedException { + super.setUseJavaBeanIntrospector(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setUseInterfaceProxies(boolean value) throws LockedException { + super.setUseInterfaceProxies(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setIgnoreUnknownBeanProperties(boolean value) throws LockedException { + super.setIgnoreUnknownBeanProperties(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setIgnoreUnknownNullBeanProperties(boolean value) throws LockedException { + super.setIgnoreUnknownNullBeanProperties(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setIgnorePropertiesWithoutSetters(boolean value) throws LockedException { + super.setIgnorePropertiesWithoutSetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setIgnoreInvocationExceptionsOnGetters(boolean value) throws LockedException { + super.setIgnoreInvocationExceptionsOnGetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setIgnoreInvocationExceptionsOnSetters(boolean value) throws LockedException { + super.setIgnoreInvocationExceptionsOnSetters(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setSortProperties(boolean value) throws LockedException { + super.setSortProperties(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setNotBeanPackages(String...values) throws LockedException { + super.setNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setNotBeanPackages(Collection<String> values) throws LockedException { + super.setNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addNotBeanPackages(String...values) throws LockedException { + super.addNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addNotBeanPackages(Collection<String> values) throws LockedException { + super.addNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeNotBeanPackages(String...values) throws LockedException { + super.removeNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeNotBeanPackages(Collection<String> values) throws LockedException { + super.removeNotBeanPackages(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setNotBeanClasses(Class<?>...values) throws LockedException { + super.setNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.setNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addNotBeanClasses(Class<?>...values) throws LockedException { + super.addNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.addNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeNotBeanClasses(Class<?>...values) throws LockedException { + super.removeNotBeanClasses(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeNotBeanClasses(Collection<Class<?>> values) throws LockedException { + super.removeNotBeanClasses(values); return this; } @Override /* CoreApi */ - public UrlEncodingSerializer addNotBeanClasses(Class<?>...classes) throws LockedException { - super.addNotBeanClasses(classes); + public UrlEncodingSerializer setBeanFilters(Class<?>...values) throws LockedException { + super.setBeanFilters(values); return this; } @Override /* CoreApi */ - public UrlEncodingSerializer addBeanFilters(Class<?>...classes) throws LockedException { - super.addBeanFilters(classes); + public UrlEncodingSerializer setBeanFilters(Collection<Class<?>> values) throws LockedException { + super.setBeanFilters(values); return this; } @Override /* CoreApi */ - public UrlEncodingSerializer addPojoSwaps(Class<?>...classes) throws LockedException { - super.addPojoSwaps(classes); + public UrlEncodingSerializer addBeanFilters(Class<?>...values) throws LockedException { + super.addBeanFilters(values); return this; } @Override /* CoreApi */ - public UrlEncodingSerializer addToDictionary(Class<?>...classes) throws LockedException { - super.addToDictionary(classes); + public UrlEncodingSerializer addBeanFilters(Collection<Class<?>> values) throws LockedException { + super.addBeanFilters(values); return this; } @Override /* CoreApi */ - public <T> UrlEncodingSerializer addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { + public UrlEncodingSerializer removeBeanFilters(Class<?>...values) throws LockedException { + super.removeBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeBeanFilters(Collection<Class<?>> values) throws LockedException { + super.removeBeanFilters(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setPojoSwaps(Class<?>...values) throws LockedException { + super.setPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setPojoSwaps(Collection<Class<?>> values) throws LockedException { + super.setPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addPojoSwaps(Class<?>...values) throws LockedException { + super.addPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addPojoSwaps(Collection<Class<?>> values) throws LockedException { + super.addPojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removePojoSwaps(Class<?>...values) throws LockedException { + super.removePojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removePojoSwaps(Collection<Class<?>> values) throws LockedException { + super.removePojoSwaps(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setImplClasses(Map<Class<?>,Class<?>> values) throws LockedException { + super.setImplClasses(values); + return this; + } + + @Override /* CoreApi */ + public <T> CoreApi addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { super.addImplClass(interfaceClass, implClass); return this; } @Override /* CoreApi */ + public UrlEncodingSerializer setBeanDictionary(Class<?>...values) throws LockedException { + super.setBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.setBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addToBeanDictionary(Class<?>...values) throws LockedException { + super.addToBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addToBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.addToBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeFromBeanDictionary(Class<?>...values) throws LockedException { + super.removeFromBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeFromBeanDictionary(Collection<Class<?>> values) throws LockedException { + super.removeFromBeanDictionary(values); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setBeanTypePropertyName(String value) throws LockedException { + super.setBeanTypePropertyName(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setDefaultParser(Class<?> value) throws LockedException { + super.setDefaultParser(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setLocale(Locale value) throws LockedException { + super.setLocale(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setTimeZone(TimeZone value) throws LockedException { + super.setTimeZone(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setMediaType(MediaType value) throws LockedException { + super.setMediaType(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setDebug(boolean value) throws LockedException { + super.setDebug(value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setProperty(String name, Object value) throws LockedException { + super.setProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer setProperties(ObjectMap properties) throws LockedException { + super.setProperties(properties); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer addToProperty(String name, Object value) throws LockedException { + super.addToProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer putToProperty(String name, Object key, Object value) throws LockedException { + super.putToProperty(name, key, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer putToProperty(String name, Object value) throws LockedException { + super.putToProperty(name, value); + return this; + } + + @Override /* CoreApi */ + public UrlEncodingSerializer removeFromProperty(String name, Object value) throws LockedException { + super.removeFromProperty(name, value); + return this; + } + + + //-------------------------------------------------------------------------------- + // Overridden methods + //-------------------------------------------------------------------------------- + + @Override /* CoreApi */ public UrlEncodingSerializer setClassLoader(ClassLoader classLoader) throws LockedException { super.setClassLoader(classLoader); return this; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java index 0e68416..dc2c46e 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java @@ -20,31 +20,7 @@ import org.apache.juneau.*; * Context properties are set by calling {@link ContextFactory#setProperty(String, Object)} on the context factory * returned {@link CoreApi#getContextFactory()}. * <p> - * The following convenience methods are also provided for setting context properties: - * <ul> - * <li>{@link UrlEncodingSerializer#setProperty(String,Object)} - * <li>{@link UrlEncodingSerializer#setProperties(ObjectMap)} - * <li>{@link UrlEncodingSerializer#addNotBeanClasses(Class[])} - * <li>{@link UrlEncodingSerializer#addBeanFilters(Class[])} - * <li>{@link UrlEncodingSerializer#addPojoSwaps(Class[])} - * <li>{@link UrlEncodingSerializer#addToDictionary(Class[])} - * <li>{@link UrlEncodingSerializer#addImplClass(Class,Class)} - * </ul> - * <p> * See {@link ContextFactory} for more information about context properties. - * - * - * <h6 class='topic' id='ConfigProperties'>Configurable properties on the URL-Encoding serializer</h6> - * <table class='styled' style='border-collapse: collapse;'> - * <tr><th>Setting name</th><th>Description</th><th>Data type</th><th>Default value</th><th>Session overridable</th></tr> - * <tr> - * <td>{@link #URLENC_expandedParams}</td> - * <td>Serialize bean property collections/arrays as separate key/value pairs.</td> - * <td><code>Boolean</code></td> - * <td><jk>false</jk></td> - * <td><jk>true</jk></td> - * </tr> - * </table> */ public class UrlEncodingSerializerContext extends UonSerializerContext { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html b/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html index 83bebb6..d75d638 100644 --- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html +++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html @@ -593,7 +593,7 @@ </p> <p class='bcode'> <jc>// Clone an existing serializer and set property for detecting recursions.</jc> - UrlEncodingSerializer s = UrlEncodingSerializer.<jsf>DEFAULT_READABLE</jsf>.clone().setProperty(SerializerContext.<jsf>SERIALIZER_detectRecursions</jsf>, <jk>true</jk>); + UrlEncodingSerializer s = UrlEncodingSerializer.<jsf>DEFAULT_READABLE</jsf>.clone().setDetectRecursions(<jk>true</jk>); <jc>// Create a recursive loop.</jc> A a = <jk>new</jk> A(); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/68dffad1/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java index 501de0f..d521717 100644 --- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java +++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java @@ -12,8 +12,6 @@ // *************************************************************************************************************************** package org.apache.juneau.xml; -import static org.apache.juneau.xml.XmlSerializerContext.*; - import org.apache.juneau.annotation.*; import org.apache.juneau.serializer.*; @@ -39,12 +37,13 @@ public class XmlDocSerializer extends XmlSerializer { public static class Simple extends XmlDocSerializer { /** Constructor */ public Simple() { - setProperty(XML_enableNamespaces, false); + setEnableNamespaces(false); } } + //-------------------------------------------------------------------------------- - // Overridden methods + // Entry point methods //-------------------------------------------------------------------------------- @Override /* Serializer */
