Repository: incubator-juneau
Updated Branches:
  refs/heads/master dc5d9afb1 -> e4b78667f


Simplification of setting of serializer/parser settings.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/e4b78667
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/e4b78667
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/e4b78667

Branch: refs/heads/master
Commit: e4b78667f6c812c585575d008f24ec9e617da463
Parents: dc5d9af
Author: JamesBognar <[email protected]>
Authored: Sun Oct 8 14:02:19 2017 -0400
Committer: JamesBognar <[email protected]>
Committed: Sun Oct 8 14:02:19 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/juneau/html/HtmlTest.java   |  9 ++-
 .../juneau/serializer/UriResolutionTest.java    |  4 +-
 .../apache/juneau/jena/RdfParserSession.java    | 21 ++-----
 .../juneau/jena/RdfSerializerSession.java       | 44 +++++---------
 .../java/org/apache/juneau/BeanSession.java     |  2 +-
 .../main/java/org/apache/juneau/ObjectMap.java  | 37 ------------
 .../java/org/apache/juneau/html/AnchorText.java | 62 ++++++++++++++++++++
 .../juneau/html/HtmlSerializerBuilder.java      | 23 ++------
 .../juneau/html/HtmlSerializerContext.java      | 36 ++----------
 .../juneau/html/HtmlSerializerSession.java      | 26 ++------
 .../juneau/json/JsonSerializerSession.java      | 12 +---
 .../msgpack/MsgPackSerializerSession.java       |  6 +-
 .../org/apache/juneau/parser/ParserSession.java | 18 ++----
 .../juneau/serializer/SerializerSession.java    | 57 ++++++------------
 .../java/org/apache/juneau/uon/ParamFormat.java | 44 ++++++++++++++
 .../org/apache/juneau/uon/UonParserSession.java |  6 +-
 .../apache/juneau/uon/UonSerializerBuilder.java | 26 ++++++++
 .../apache/juneau/uon/UonSerializerContext.java | 27 ++-------
 .../apache/juneau/uon/UonSerializerSession.java | 12 +---
 .../urlencoding/UrlEncodingParserSession.java   |  6 +-
 .../UrlEncodingSerializerSession.java           |  6 +-
 .../org/apache/juneau/xml/XmlParserSession.java | 18 ++----
 .../apache/juneau/xml/XmlSerializerSession.java | 31 +++-------
 .../juneau/examples/rest/DirectoryResource.java |  2 +-
 .../resources/DirectoryResource.java            |  2 +-
 .../microservice/resources/LogsResource.java    |  2 +-
 26 files changed, 229 insertions(+), 310 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
index 9d76201..6229b14 100755
--- 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
+++ 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.html;
 
-import static org.apache.juneau.html.HtmlSerializerContext.*;
 import static org.junit.Assert.*;
 
 import java.util.*;
@@ -54,7 +53,7 @@ public class HtmlTest {
                String r;
                String expected = null;
 
-               s.uriAnchorText(TO_STRING);
+               s.uriAnchorText(AnchorText.TO_STRING);
                r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0/x0</a>"
@@ -74,7 +73,7 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&amp;label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&amp;label2=MY_LABEL</a>";
                assertEquals(expected, r);
 
-               s.uriAnchorText(URI);
+               s.uriAnchorText(AnchorText.URI);
                r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0/x0</a>"
@@ -94,7 +93,7 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&amp;label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&amp;label2=MY_LABEL</a>";
                assertEquals(expected, r);
 
-               s.uriAnchorText(LAST_TOKEN);
+               s.uriAnchorText(AnchorText.LAST_TOKEN);
                r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>x0</a>"
@@ -114,7 +113,7 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&amp;label2=MY_LABEL'>xe</a>";
                assertEquals(expected, r);
 
-               s.uriAnchorText(URI_ANCHOR);
+               s.uriAnchorText(AnchorText.URI_ANCHOR);
                r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0/x0</a>"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
index 5faf84c..f1c094d 100644
--- 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
+++ 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/serializer/UriResolutionTest.java
@@ -617,13 +617,13 @@ public class UriResolutionTest {
 
        @Test
        public void c1_testHtmlSerialize() throws Exception {
-               Serializer s = new 
HtmlSerializerBuilder().sq().lookForLabelParameters(true).uriAnchorText(HtmlSerializerContext.LAST_TOKEN).uriContext(input.context).uriResolution(input.resolution).uriRelativity(input.relativity).build();
+               Serializer s = new 
HtmlSerializerBuilder().sq().lookForLabelParameters(true).uriAnchorText(AnchorText.LAST_TOKEN).uriContext(input.context).uriResolution(input.resolution).uriRelativity(input.relativity).build();
                testSerialize(s, results.html);
        }
 
        @Test
        public void c2_testHtmlParse() throws Exception {
-               Serializer s = new 
HtmlSerializerBuilder().sq().lookForLabelParameters(true).uriAnchorText(HtmlSerializerContext.LAST_TOKEN).uriContext(input.context).uriResolution(input.resolution).uriRelativity(input.relativity).build();
+               Serializer s = new 
HtmlSerializerBuilder().sq().lookForLabelParameters(true).uriAnchorText(AnchorText.LAST_TOKEN).uriContext(input.context).uriResolution(input.resolution).uriRelativity(input.relativity).build();
                testParse(s, HtmlParser.DEFAULT);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
index f9d9440..2365035 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
@@ -59,21 +59,12 @@ public class RdfParserSession extends ReaderParserSession {
                ObjectMap jenaSettings = new ObjectMap();
                jenaSettings.putAll(ctx.jenaSettings);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefixes(RdfParserContext.PREFIX, "Rdf.")) {
-                       this.rdfLanguage = ctx.rdfLanguage;
-                       this.juneauNs = ctx.juneauNs;
-                       this.juneauBpNs = ctx.juneauBpNs;
-                       this.trimWhitespace = ctx.trimWhitespace;
-                       this.collectionFormat = ctx.collectionFormat;
-                       this.looseCollections = ctx.looseCollections;
-               } else {
-                       this.rdfLanguage = p.getString(RDF_language, 
ctx.rdfLanguage);
-                       this.juneauNs = (p.containsKey(RDF_juneauNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauNs)) : ctx.juneauNs);
-                       this.juneauBpNs = (p.containsKey(RDF_juneauBpNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauBpNs)) : ctx.juneauBpNs);
-                       this.trimWhitespace = 
p.getBoolean(RdfParserContext.RDF_trimWhitespace, ctx.trimWhitespace);
-                       this.collectionFormat = 
p.getWithDefault(RDF_collectionFormat, ctx.collectionFormat, 
RdfCollectionFormat.class);
-                       this.looseCollections = 
p.getBoolean(RDF_looseCollections, ctx.looseCollections);
-               }
+               this.rdfLanguage = p.getString(RDF_language, ctx.rdfLanguage);
+               this.juneauNs = (p.containsKey(RDF_juneauNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauNs)) : ctx.juneauNs);
+               this.juneauBpNs = (p.containsKey(RDF_juneauBpNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauBpNs)) : ctx.juneauBpNs);
+               this.trimWhitespace = 
p.getBoolean(RdfParserContext.RDF_trimWhitespace, ctx.trimWhitespace);
+               this.collectionFormat = p.getWithDefault(RDF_collectionFormat, 
ctx.collectionFormat, RdfCollectionFormat.class);
+               this.looseCollections = p.getBoolean(RDF_looseCollections, 
ctx.looseCollections);
                this.model = ModelFactory.createDefaultModel();
                addModelPrefix(juneauNs);
                addModelPrefix(juneauBpNs);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
index 918d405..3a6fb25 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
@@ -71,36 +71,22 @@ public final class RdfSerializerSession extends 
WriterSerializerSession {
                jenaSettings.put("rdfXml.attributeQuoteChar", 
Character.toString(getQuoteChar()));
                jenaSettings.putAll(ctx.jenaSettings);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefixes(RdfSerializerContext.PREFIX, 
"Rdf.")) {
-                       this.rdfLanguage = ctx.rdfLanguage;
-                       this.juneauNs = ctx.juneauNs;
-                       this.juneauBpNs = ctx.juneauBpNs;
-                       this.addLiteralTypes = ctx.addLiteralTypes;
-                       this.addRootProperty = ctx.addRootProperty;
-                       this.collectionFormat = ctx.collectionFormat;
-                       this.looseCollections = ctx.looseCollections;
-                       this.useXmlNamespaces = ctx.useXmlNamespaces;
-                       this.autoDetectNamespaces = ctx.autoDetectNamespaces;
-                       this.namespaces = ctx.namespaces;
-                       addBeanTypeProperties = ctx.addBeanTypeProperties;
-               } else {
-                       this.rdfLanguage = p.getString(RDF_language, 
ctx.rdfLanguage);
-                       this.juneauNs = (p.containsKey(RDF_juneauNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauNs)) : ctx.juneauNs);
-                       this.juneauBpNs = (p.containsKey(RDF_juneauBpNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauBpNs)) : ctx.juneauBpNs);
-                       this.addLiteralTypes = 
p.getBoolean(RDF_addLiteralTypes, ctx.addLiteralTypes);
-                       this.addRootProperty = 
p.getBoolean(RDF_addRootProperty, ctx.addRootProperty);
-                       for (Map.Entry<String,Object> e : p.entrySet()) {
-                               String key = e.getKey();
-                               if (key.startsWith("Rdf.jena."))
-                                       jenaSettings.put(key.substring(9), 
e.getValue());
-                       }
-                       this.collectionFormat = 
p.getWithDefault(RDF_collectionFormat, ctx.collectionFormat, 
RdfCollectionFormat.class);
-                       this.looseCollections = 
p.getBoolean(RDF_looseCollections, ctx.looseCollections);
-                       this.useXmlNamespaces = 
p.getBoolean(RDF_useXmlNamespaces, ctx.useXmlNamespaces);
-                       this.autoDetectNamespaces = 
p.getBoolean(RDF_autoDetectNamespaces, ctx.autoDetectNamespaces);
-                       this.namespaces = p.getWithDefault(RDF_namespaces, 
ctx.namespaces, Namespace[].class);
-                       addBeanTypeProperties = 
p.getBoolean(RDF_addBeanTypeProperties, ctx.addBeanTypeProperties);
+               this.rdfLanguage = p.getString(RDF_language, ctx.rdfLanguage);
+               this.juneauNs = (p.containsKey(RDF_juneauNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauNs)) : ctx.juneauNs);
+               this.juneauBpNs = (p.containsKey(RDF_juneauBpNs) ? 
NamespaceFactory.parseNamespace(p.get(RDF_juneauBpNs)) : ctx.juneauBpNs);
+               this.addLiteralTypes = p.getBoolean(RDF_addLiteralTypes, 
ctx.addLiteralTypes);
+               this.addRootProperty = p.getBoolean(RDF_addRootProperty, 
ctx.addRootProperty);
+               for (Map.Entry<String,Object> e : p.entrySet()) {
+                       String key = e.getKey();
+                       if (key.startsWith("Rdf.jena."))
+                               jenaSettings.put(key.substring(9), 
e.getValue());
                }
+               this.collectionFormat = p.getWithDefault(RDF_collectionFormat, 
ctx.collectionFormat, RdfCollectionFormat.class);
+               this.looseCollections = p.getBoolean(RDF_looseCollections, 
ctx.looseCollections);
+               this.useXmlNamespaces = p.getBoolean(RDF_useXmlNamespaces, 
ctx.useXmlNamespaces);
+               this.autoDetectNamespaces = 
p.getBoolean(RDF_autoDetectNamespaces, ctx.autoDetectNamespaces);
+               this.namespaces = p.getWithDefault(RDF_namespaces, 
ctx.namespaces, Namespace[].class);
+               addBeanTypeProperties = p.getBoolean(RDF_addBeanTypeProperties, 
ctx.addBeanTypeProperties);
                this.model = ModelFactory.createDefaultModel();
                addModelPrefix(juneauNs);
                addModelPrefix(juneauBpNs);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index b26c8bf..0a4d78d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -58,7 +58,7 @@ public class BeanSession extends Session {
                this.ctx = ctx;
                Locale _locale = null;
                ObjectMap p = getProperties();
-               if (p == null || ! p.containsKeyPrefix(BeanContext.PREFIX)) {
+               if (p == null) {
                        _locale = (args.locale != null ? args.locale : 
ctx.locale);
                        this.timeZone = (args.timeZone != null ? args.timeZone 
: ctx.timeZone);
                        this.debug = ctx.debug;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java
index 4fc6927..e3ab9bc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ObjectMap.java
@@ -1180,43 +1180,6 @@ public class ObjectMap extends 
LinkedHashMap<String,Object> {
        }
 
        /**
-        * Returns <jk>true</jk> if this map contains a key with the specified 
string prefix.
-        *
-        * @param prefix The string prefix.
-        * @return <jk>true</jk> if this map contains a key with the specified 
string prefix.
-        */
-       public boolean containsKeyPrefix(String prefix) {
-               for (String s : super.keySet())
-                       if (s.startsWith(prefix))
-                               return true;
-               if (inner != null) {
-                       if (inner instanceof ObjectMap) {
-                               if 
(((ObjectMap)inner).containsKeyPrefix(prefix))
-                                       return true;
-                               return false;
-                       }
-                       for (String s : inner.keySet())
-                               if (s.startsWith(prefix))
-                                       return true;
-               }
-               return false;
-       }
-
-       /**
-        * Same as {@link #containsKeyPrefix(String)} except returns 
<jk>true</jk> if this map contains at least one
-        * of the specified prefixes.
-        *
-        * @param prefixes The string prefixes.
-        * @return <jk>true</jk> if this map contains a key with at least one 
of the specified string prefix.
-        */
-       public boolean containsKeyPrefixes(String...prefixes) {
-               for (String p : prefixes)
-                       if (containsKeyPrefix(p))
-                               return true;
-               return false;
-       }
-
-       /**
         * Returns <jk>true</jk> if this map contains the specified key, 
ignoring the inner map if it exists.
         *
         * @param key The key to look up.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
new file mode 100644
index 0000000..8b2f7ce
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
@@ -0,0 +1,62 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.html;
+
+/**
+ * Identifies possible values for the {@link 
HtmlSerializerContext#HTML_uriAnchorText} setting.
+ */
+public enum AnchorText {
+
+       /**
+        * Set to the bean property name.
+        */
+       PROPERTY_NAME,
+
+       /**
+        * Set to whatever is returned by {@link #toString()} on the object.
+        */
+       TO_STRING,
+
+       /**
+        * Set to the URI value.
+        */
+       URI,
+
+       /**
+        * Set to the last token of the URI value.
+        */
+       LAST_TOKEN,
+
+       /**
+        * Set to the anchor of the URL.
+        *
+        * <p>
+        * (e.g. <js>"http://localhost:9080/foobar#anchorTextHere";</js>)
+        */
+       URI_ANCHOR,
+
+       /**
+        * Same as {@link #TO_STRING} but assumes it's a context-relative path.
+        */
+       CONTEXT_RELATIVE,
+
+       /**
+        * Same as {@link #TO_STRING} but assumes it's a servlet-relative path.
+        */
+       SERVLET_RELATIVE,
+
+       /**
+        * Same as {@link #TO_STRING} but assumes it's a path-relative path.
+        */
+       PATH_RELATIVE
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
index 66df425..6acada7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -57,8 +57,8 @@ public class HtmlSerializerBuilder extends 
XmlSerializerBuilder {
         *
         * <ul>
         *      <li><b>Name:</b> <js>"HtmlSerializer.uriAnchorText"</js>
-        *      <li><b>Data type:</b> <code>String</code>
-        *      <li><b>Default:</b> <js>"toString"</js>
+        *      <li><b>Data type:</b> <code>AnchorText</code>
+        *      <li><b>Default:</b> <jsf>TO_STRING</jsf>
         *      <li><b>Session-overridable:</b> <jk>true</jk>
         * </ul>
         *
@@ -67,33 +67,18 @@ public class HtmlSerializerBuilder extends 
XmlSerializerBuilder {
         * in HTML, this setting defines what to set the inner text to.
         *
         * <p>
-        * Possible values:
-        * <ul class='spaced-list'>
-        *      <li>
-        *              {@link HtmlSerializerContext#TO_STRING} / 
<js>"toString"</js> - Set to whatever is returned by
-        *              {@link #toString()} on the object.
-        *      <li>
-        *              {@link HtmlSerializerContext#URI} / <js>"uri"</js> - 
Set to the URI value.
-        *      <li>
-        *              {@link HtmlSerializerContext#LAST_TOKEN} / 
<js>"lastToken"</js> - Set to the last token of the URI value.
-        *      <li>
-        *              {@link HtmlSerializerContext#PROPERTY_NAME} / 
<js>"propertyName"</js> - Set to the bean property name.
-        *      <li>
-        *              {@link HtmlSerializerContext#URI_ANCHOR} / 
<js>"uriAnchor"</js> - Set to the anchor of the URL.
-        *              (e.g. 
<js>"http://localhost:9080/foobar#anchorTextHere";</js>)
-        * </ul>
+        * See the {@link AnchorText} enum for possible values.
         *
         * <h5 class='section'>Notes:</h5>
         * <ul>
         *      <li>This is equivalent to calling 
<code>property(<jsf>HTML_uriAnchorText</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).
         * @see HtmlSerializerContext#HTML_uriAnchorText
         */
-       public HtmlSerializerBuilder uriAnchorText(String value) {
+       public HtmlSerializerBuilder uriAnchorText(AnchorText value) {
                return property(HTML_uriAnchorText, value);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
index 0f3c03d..2749b51 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
@@ -48,8 +48,8 @@ public class HtmlSerializerContext extends 
XmlSerializerContext {
         *
         * <ul>
         *      <li><b>Name:</b> <js>"HtmlSerializer.uriAnchorText"</js>
-        *      <li><b>Data type:</b> <code>String</code>
-        *      <li><b>Default:</b> <js>"toString"</js>
+        *      <li><b>Data type:</b> <code>AnchorText</code>
+        *      <li><b>Default:</b> <jsf>TO_STRING</jsf>
         *      <li><b>Session-overridable:</b> <jk>true</jk>
         * </ul>
         *
@@ -58,36 +58,10 @@ public class HtmlSerializerContext extends 
XmlSerializerContext {
         * <xt>&gt;</xt>text<xt>&lt;/a&gt;</xt></code>) in HTML, this setting 
defines what to set the inner text to.
         *
         * <p>
-        * Possible values:
-        * <ul class='spaced-list'>
-        *      <li>
-        *              {@link #TO_STRING} / <js>"toString"</js> - Set to 
whatever is returned by {@link #toString()} on the
-        *              object.
-        *      <li>
-        *              {@link #URI} / <js>"uri"</js> - Set to the URI value.
-        *      <li>
-        *              {@link #LAST_TOKEN} / <js>"lastToken"</js> - Set to the 
last token of the URI value.
-        *      <li>
-        *              {@link #PROPERTY_NAME} / <js>"propertyName"</js> - Set 
to the bean property name.
-        *      <li>
-        *              {@link #URI_ANCHOR} / <js>"uriAnchor"</js> - Set to the 
anchor of the URL.
-        *              (e.g. 
<js>"http://localhost:9080/foobar#anchorTextHere";</js>)
-        * </ul>
+        * See the {@link AnchorText} enum for possible values.
         */
        public static final String HTML_uriAnchorText = PREFIX + 
"uriAnchorText";
 
-       /** Constant for {@link HtmlSerializerContext#HTML_uriAnchorText} 
property. */
-       public static final String PROPERTY_NAME = "PROPERTY_NAME";
-       /** Constant for {@link HtmlSerializerContext#HTML_uriAnchorText} 
property. */
-       public static final String TO_STRING = "TO_STRING";
-       /** Constant for {@link HtmlSerializerContext#HTML_uriAnchorText} 
property. */
-       public static final String URI = "URI";
-       /** Constant for {@link HtmlSerializerContext#HTML_uriAnchorText} 
property. */
-       public static final String LAST_TOKEN = "LAST_TOKEN";
-       /** Constant for {@link HtmlSerializerContext#HTML_uriAnchorText} 
property. */
-       public static final String URI_ANCHOR = "URI_ANCHOR";
-
-
        /**
         * <b>Configuration property:</b>  Look for URLs in {@link String 
Strings}.
         *
@@ -170,7 +144,7 @@ public class HtmlSerializerContext extends 
XmlSerializerContext {
        public static final String HTML_addBeanTypeProperties = PREFIX + 
"addBeanTypeProperties";
 
 
-       final String uriAnchorText;
+       final AnchorText uriAnchorText;
        final boolean
                lookForLabelParameters,
                detectLinksInStrings,
@@ -188,7 +162,7 @@ public class HtmlSerializerContext extends 
XmlSerializerContext {
         */
        public HtmlSerializerContext(PropertyStore ps) {
                super(ps);
-               uriAnchorText = ps.getProperty(HTML_uriAnchorText, 
String.class, TO_STRING);
+               uriAnchorText = ps.getProperty(HTML_uriAnchorText, 
AnchorText.class, AnchorText.TO_STRING);
                lookForLabelParameters = 
ps.getProperty(HTML_lookForLabelParameters, Boolean.class, true);
                detectLinksInStrings = 
ps.getProperty(HTML_detectLinksInStrings, Boolean.class, true);
                labelParameter = ps.getProperty(HTML_labelParameter, 
String.class, "label");

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index 056f6f1..9e9ae42 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -46,11 +46,6 @@ public class HtmlSerializerSession extends 
XmlSerializerSession {
        private final Pattern labelPattern;
 
 
-       @SuppressWarnings("hiding")
-       enum AnchorText {
-               PROPERTY_NAME, TO_STRING, URI, LAST_TOKEN, URI_ANCHOR, 
CONTEXT_RELATIVE, SERVLET_RELATIVE, PATH_RELATIVE
-       }
-
        /**
         * Create a new session using properties specified in the context.
         *
@@ -67,21 +62,12 @@ public class HtmlSerializerSession extends 
XmlSerializerSession {
                super(ctx, args);
                String labelParameter;
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(HtmlSerializerContext.PREFIX)) {
-                       anchorText = Enum.valueOf(AnchorText.class, 
ctx.uriAnchorText);
-                       detectLinksInStrings = ctx.detectLinksInStrings;
-                       lookForLabelParameters = ctx.lookForLabelParameters;
-                       labelParameter = ctx.labelParameter;
-                       addKeyValueTableHeaders = ctx.addKeyValueTableHeaders;
-                       addBeanTypeProperties = ctx.addBeanTypeProperties;
-               } else {
-                       anchorText = Enum.valueOf(AnchorText.class, 
p.getString(HTML_uriAnchorText, ctx.uriAnchorText));
-                       detectLinksInStrings = 
p.getBoolean(HTML_detectLinksInStrings, ctx.detectLinksInStrings);
-                       lookForLabelParameters = 
p.getBoolean(HTML_lookForLabelParameters, ctx.lookForLabelParameters);
-                       labelParameter = p.getString(HTML_labelParameter, 
ctx.labelParameter);
-                       addKeyValueTableHeaders = 
p.getBoolean(HTML_addKeyValueTableHeaders, ctx.addKeyValueTableHeaders);
-                       addBeanTypeProperties = 
p.getBoolean(HTML_addBeanTypeProperties, ctx.addBeanTypeProperties);
-               }
+               anchorText = p.getWithDefault(HTML_uriAnchorText, 
ctx.uriAnchorText, AnchorText.class);
+               detectLinksInStrings = p.getBoolean(HTML_detectLinksInStrings, 
ctx.detectLinksInStrings);
+               lookForLabelParameters = 
p.getBoolean(HTML_lookForLabelParameters, ctx.lookForLabelParameters);
+               labelParameter = p.getString(HTML_labelParameter, 
ctx.labelParameter);
+               addKeyValueTableHeaders = 
p.getBoolean(HTML_addKeyValueTableHeaders, ctx.addKeyValueTableHeaders);
+               addBeanTypeProperties = 
p.getBoolean(HTML_addBeanTypeProperties, ctx.addBeanTypeProperties);
                labelPattern = Pattern.compile("[\\?\\&]" + 
Pattern.quote(labelParameter) + "=([^\\&]*)");
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
index 8718641..6762136 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
@@ -50,15 +50,9 @@ public class JsonSerializerSession extends 
WriterSerializerSession {
        protected JsonSerializerSession(JsonSerializerContext ctx, 
SerializerSessionArgs args) {
                super(ctx, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(JsonSerializerContext.PREFIX)) {
-                       simpleMode = ctx.simpleMode;
-                       escapeSolidus = ctx.escapeSolidus;
-                       addBeanTypeProperties = ctx.addBeanTypeProperties;
-               } else {
-                       simpleMode = p.getBoolean(JSON_simpleMode, 
ctx.simpleMode);
-                       escapeSolidus = p.getBoolean(JSON_escapeSolidus, 
ctx.escapeSolidus);
-                       addBeanTypeProperties = 
p.getBoolean(JSON_addBeanTypeProperties, ctx.addBeanTypeProperties);
-               }
+               simpleMode = p.getBoolean(JSON_simpleMode, ctx.simpleMode);
+               escapeSolidus = p.getBoolean(JSON_escapeSolidus, 
ctx.escapeSolidus);
+               addBeanTypeProperties = 
p.getBoolean(JSON_addBeanTypeProperties, ctx.addBeanTypeProperties);
        }
 
        @Override /* Session */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
index bc0e2ca..7dac725 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
@@ -48,11 +48,7 @@ public final class MsgPackSerializerSession extends 
OutputStreamSerializerSessio
        protected MsgPackSerializerSession(MsgPackSerializerContext ctx, 
SerializerSessionArgs args) {
                super(ctx, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(MsgPackSerializerContext.PREFIX)) {
-                       addBeanTypeProperties = ctx.addBeanTypeProperties;
-               } else {
-                       addBeanTypeProperties = 
p.getBoolean(MSGPACK_addBeanTypeProperties, ctx.addBeanTypeProperties);
-               }
+               addBeanTypeProperties = 
p.getBoolean(MSGPACK_addBeanTypeProperties, ctx.addBeanTypeProperties);
        }
 
        @Override /* Session */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
index 0e884eb..44e4718 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
@@ -59,19 +59,11 @@ public abstract class ParserSession extends BeanSession {
                        ctx = ParserContext.DEFAULT;
                Class<?> listenerClass;
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(ParserContext.PREFIX)) {
-                       trimStrings = ctx.trimStrings;
-                       strict = ctx.strict;
-                       inputStreamCharset = ctx.inputStreamCharset;
-                       fileCharset = ctx.fileCharset;
-                       listenerClass = ctx.listener;
-               } else {
-                       trimStrings = p.getBoolean(PARSER_trimStrings, 
ctx.trimStrings);
-                       strict = p.getBoolean(PARSER_strict, ctx.strict);
-                       inputStreamCharset = 
p.getString(PARSER_inputStreamCharset, ctx.inputStreamCharset);
-                       fileCharset = p.getString(PARSER_fileCharset, 
ctx.fileCharset);
-                       listenerClass = p.getWithDefault(PARSER_listener, 
ctx.listener, Class.class);
-               }
+               trimStrings = p.getBoolean(PARSER_trimStrings, ctx.trimStrings);
+               strict = p.getBoolean(PARSER_strict, ctx.strict);
+               inputStreamCharset = p.getString(PARSER_inputStreamCharset, 
ctx.inputStreamCharset);
+               fileCharset = p.getString(PARSER_fileCharset, ctx.fileCharset);
+               listenerClass = p.getWithDefault(PARSER_listener, ctx.listener, 
Class.class);
                this.javaMethod = args.javaMethod;
                this.outer = args.outer;
                this.listener = newInstance(ParserListener.class, 
listenerClass);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index ae4a206..5a1ff58 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -100,45 +100,24 @@ public abstract class SerializerSession extends 
BeanSession {
                UriRelativity uriRelativity;
                Class<?> listenerClass;
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(SerializerContext.PREFIX)) {
-                       maxDepth = ctx.maxDepth;
-                       initialDepth = ctx.initialDepth;
-                       detectRecursions = ctx.detectRecursions;
-                       ignoreRecursions = ctx.ignoreRecursions;
-                       useWhitespace = ctx.useWhitespace;
-                       maxIndent = ctx.maxIndent;
-                       addBeanTypeProperties = ctx.addBeanTypeProperties;
-                       trimNulls = ctx.trimNulls;
-                       trimEmptyCollections = ctx.trimEmptyCollections;
-                       trimEmptyMaps = ctx.trimEmptyMaps;
-                       trimStrings = ctx.trimStrings;
-                       quoteChar = ctx.quoteChar;
-                       sortCollections = ctx.sortCollections;
-                       sortMaps = ctx.sortMaps;
-                       abridged = ctx.abridged;
-                       uriResolution = ctx.uriResolution;
-                       uriRelativity = ctx.uriRelativity;
-                       listenerClass = ctx.listener;
-               } else {
-                       maxDepth = p.getInt(SERIALIZER_maxDepth, ctx.maxDepth);
-                       initialDepth = p.getInt(SERIALIZER_initialDepth, 
ctx.initialDepth);
-                       detectRecursions = 
p.getBoolean(SERIALIZER_detectRecursions, ctx.detectRecursions);
-                       ignoreRecursions = 
p.getBoolean(SERIALIZER_ignoreRecursions, ctx.ignoreRecursions);
-                       useWhitespace = p.getBoolean(SERIALIZER_useWhitespace, 
ctx.useWhitespace);
-                       maxIndent = p.getInt(SERIALIZER_maxIndent, 
ctx.maxIndent);
-                       addBeanTypeProperties = 
p.getBoolean(SERIALIZER_addBeanTypeProperties, ctx.addBeanTypeProperties);
-                       trimNulls = p.getBoolean(SERIALIZER_trimNullProperties, 
ctx.trimNulls);
-                       trimEmptyCollections = 
p.getBoolean(SERIALIZER_trimEmptyCollections, ctx.trimEmptyCollections);
-                       trimEmptyMaps = p.getBoolean(SERIALIZER_trimEmptyMaps, 
ctx.trimEmptyMaps);
-                       trimStrings = p.getBoolean(SERIALIZER_trimStrings, 
ctx.trimStrings);
-                       quoteChar = p.getString(SERIALIZER_quoteChar, 
""+ctx.quoteChar).charAt(0);
-                       sortCollections = 
p.getBoolean(SERIALIZER_sortCollections, ctx.sortMaps);
-                       sortMaps = p.getBoolean(SERIALIZER_sortMaps, 
ctx.sortMaps);
-                       abridged = p.getBoolean(SERIALIZER_abridged, 
ctx.abridged);
-                       uriResolution = 
p.getWithDefault(SERIALIZER_uriResolution, ctx.uriResolution, 
UriResolution.class);
-                       uriRelativity = 
p.getWithDefault(SERIALIZER_uriRelativity, ctx.uriRelativity, 
UriRelativity.class);
-                       listenerClass = p.getWithDefault(SERIALIZER_listener, 
ctx.listener, Class.class);
-               }
+               maxDepth = p.getInt(SERIALIZER_maxDepth, ctx.maxDepth);
+               initialDepth = p.getInt(SERIALIZER_initialDepth, 
ctx.initialDepth);
+               detectRecursions = p.getBoolean(SERIALIZER_detectRecursions, 
ctx.detectRecursions);
+               ignoreRecursions = p.getBoolean(SERIALIZER_ignoreRecursions, 
ctx.ignoreRecursions);
+               useWhitespace = p.getBoolean(SERIALIZER_useWhitespace, 
ctx.useWhitespace);
+               maxIndent = p.getInt(SERIALIZER_maxIndent, ctx.maxIndent);
+               addBeanTypeProperties = 
p.getBoolean(SERIALIZER_addBeanTypeProperties, ctx.addBeanTypeProperties);
+               trimNulls = p.getBoolean(SERIALIZER_trimNullProperties, 
ctx.trimNulls);
+               trimEmptyCollections = 
p.getBoolean(SERIALIZER_trimEmptyCollections, ctx.trimEmptyCollections);
+               trimEmptyMaps = p.getBoolean(SERIALIZER_trimEmptyMaps, 
ctx.trimEmptyMaps);
+               trimStrings = p.getBoolean(SERIALIZER_trimStrings, 
ctx.trimStrings);
+               quoteChar = p.getString(SERIALIZER_quoteChar, 
""+ctx.quoteChar).charAt(0);
+               sortCollections = p.getBoolean(SERIALIZER_sortCollections, 
ctx.sortMaps);
+               sortMaps = p.getBoolean(SERIALIZER_sortMaps, ctx.sortMaps);
+               abridged = p.getBoolean(SERIALIZER_abridged, ctx.abridged);
+               uriResolution = p.getWithDefault(SERIALIZER_uriResolution, 
ctx.uriResolution, UriResolution.class);
+               uriRelativity = p.getWithDefault(SERIALIZER_uriRelativity, 
ctx.uriRelativity, UriRelativity.class);
+               listenerClass = p.getWithDefault(SERIALIZER_listener, 
ctx.listener, Class.class);
 
                uriResolver = new UriResolver(uriResolution, uriRelativity, 
args.uriContext == null ? ctx.uriContext : args.uriContext);
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/ParamFormat.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/ParamFormat.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/ParamFormat.java
new file mode 100644
index 0000000..7c6e3a7
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/ParamFormat.java
@@ -0,0 +1,44 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.uon;
+
+/**
+ * Identifies the possible values for the {@link 
UonSerializerContext#UON_paramFormat} setting.
+ */
+public enum ParamFormat {
+
+       /**
+        * Use UON notation for values.
+        *
+        * <p>
+        * String values such as <js>"(foo='bar')"</js> will end up being 
quoted and escaped to <js>"'(foo=bar~'baz~')'"</js>.
+        *
+        * <p>
+        * Boolean strings (<js>"true"</js>/<js>"false"</js>) and numeric 
values (<js>"123"</js>) will also end up quoted
+        * (<js>"'true'"</js>, <js>"'false'"</js>, <js>"'123'"</js>.
+        */
+       UON,
+
+       /**
+        * Serialize as plain text.
+        *
+        * <p>
+        * Strings will never be quoted or escaped.
+        *
+        * <p>
+        * Note that this can cause errors during parsing if you're using the 
URL-encoding parser to parse the results since
+        * UON constructs won't be differentiable.
+        * However, this is not an issue if you're simply creating queries or 
form posts against 3rd-party interfaces.
+        */
+       PLAINTEXT;
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
index 25c0b94..c24385a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
@@ -54,11 +54,7 @@ public class UonParserSession extends ReaderParserSession {
        protected UonParserSession(UonParserContext ctx, ParserSessionArgs 
args) {
                super(ctx, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(UonParserContext.PREFIX)) {
-                       decodeChars = ctx.decodeChars;
-               } else {
-                       decodeChars = p.getBoolean(UON_decodeChars, 
ctx.decodeChars);
-               }
+               decodeChars = p.getBoolean(UON_decodeChars, ctx.decodeChars);
        }
 
        @Override /* Session */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
index 42ce35f..dd1d92c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
@@ -93,6 +93,32 @@ public class UonSerializerBuilder extends SerializerBuilder {
                return encodeChars(true);
        }
 
+       /**
+        * <b>Configuration property:</b>  Format to use for 
query/form-data/header values.
+        *
+        * <ul>
+        *      <li><b>Name:</b> <js>"UrlEncodingSerializer.paramFormat"</js>
+        *      <li><b>Data type:</b> <code>ParamFormat</code>
+        *      <li><b>Default:</b> <jsf>UON</jsf>
+        *      <li><b>Session-overridable:</b> <jk>true</jk>
+        * </ul>
+        *
+        * <p>
+        * Specifies the format to use for URL GET parameter keys and values.
+        *
+        * <h5 class='section'>Notes:</h5>
+        * <ul>
+        *      <li>This is equivalent to calling 
<code>property(<jsf>UON_paramFormat</jsf>, value)</code>.
+        * </ul>
+        *
+        * @param value The new value for this property.
+        * @return This object (for method chaining).
+        * @see UonSerializerContext#UON_paramFormat
+        */
+       public UonSerializerBuilder paramFormat(ParamFormat value) {
+               return property(UON_paramFormat, value);
+       }
+
        @Override /* SerializerBuilder */
        public UonSerializerBuilder maxDepth(int value) {
                super.maxDepth(value);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerContext.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerContext.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerContext.java
index 6ce10e4..612802b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerContext.java
@@ -91,30 +91,13 @@ public class UonSerializerContext extends SerializerContext 
{
         *
         * <ul>
         *      <li><b>Name:</b> <js>"UrlEncodingSerializer.paramFormat"</js>
-        *      <li><b>Data type:</b> <code>String</code>
-        *      <li><b>Default:</b> <js>"UON"</js>
+        *      <li><b>Data type:</b> <code>ParamFormat</code>
+        *      <li><b>Default:</b> <jsf>UON</jsf>
         *      <li><b>Session-overridable:</b> <jk>true</jk>
         * </ul>
         *
         * <p>
         * Specifies the format to use for URL GET parameter keys and values.
-        *
-        * <p>
-        * The possible values are:
-        * <ul class='spaced-list'>
-        *      <li>
-        *              <js>"UON"</js> (default) - Use UON notation for values.
-        *              <br>String values such as <js>"(foo='bar')"</js> will 
end up being quoted and escaped to <js>"'(foo=bar~'baz~')'"</js>.
-        *              <br>Boolean strings (<js>"true"</js>/<js>"false"</js>) 
and numeric values (<js>"123"</js>) will also end up
-        *              quoted (<js>"'true'"</js>, <js>"'false'"</js>, 
<js>"'123'"</js>.
-        *      <li>
-        *              <js>"PLAINTEXT"</js> (default) - Serialize as plain 
text.
-        *              <br>Strings will never be quoted or escaped.
-        *              <br>Note that this can cause errors during parsing if 
you're using the URL-encoding parser to parse
-        *              the results since UON constructs won't be 
differentiable.
-        *              <br>However, this is not an issue if you're simply 
creating queries or form posts against 3rd-party
-        *              interfaces.
-        * </ul>
         */
        public static final String UON_paramFormat = PREFIX + "paramFormat";
 
@@ -123,7 +106,7 @@ public class UonSerializerContext extends SerializerContext 
{
                encodeChars,
                addBeanTypeProperties;
 
-       final String
+       final ParamFormat
                paramFormat;
 
        /**
@@ -139,7 +122,7 @@ public class UonSerializerContext extends SerializerContext 
{
                encodeChars = ps.getProperty(UON_encodeChars, boolean.class, 
false);
                addBeanTypeProperties = 
ps.getProperty(UON_addBeanTypeProperties, boolean.class,
                        ps.getProperty(SERIALIZER_addBeanTypeProperties, 
boolean.class, true));
-               paramFormat = ps.getProperty(UON_paramFormat, String.class, 
"UON");
+               paramFormat = ps.getProperty(UON_paramFormat, 
ParamFormat.class, ParamFormat.UON);
        }
 
        @Override /* Context */
@@ -157,7 +140,7 @@ public class UonSerializerContext extends SerializerContext 
{
         *
         * @return The value of the {@link 
UonSerializerContext#UON_paramFormat} setting.
         */
-       public String getParamFormat() {
+       public ParamFormat getParamFormat() {
                return paramFormat;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
index d8ae0d2..db6eea2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerSession.java
@@ -49,15 +49,9 @@ public class UonSerializerSession extends 
WriterSerializerSession {
        public UonSerializerSession(UonSerializerContext ctx, Boolean encode, 
SerializerSessionArgs args) {
                super(ctx, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(UonSerializerContext.PREFIX)) {
-                       encodeChars = encode == null ? ctx.encodeChars : encode;
-                       addBeanTypeProperties = ctx.addBeanTypeProperties;
-                       plainTextParams = ctx.paramFormat.equals("PLAINTEXT");
-               } else {
-                       encodeChars = encode == null ? 
p.getBoolean(UON_encodeChars, ctx.encodeChars) : encode;
-                       addBeanTypeProperties = 
p.getBoolean(UON_addBeanTypeProperties, ctx.addBeanTypeProperties);
-                       plainTextParams = 
p.getString(UonSerializerContext.UON_paramFormat, 
ctx.paramFormat).equals("PLAINTEXT");
-               }
+               encodeChars = encode == null ? p.getBoolean(UON_encodeChars, 
ctx.encodeChars) : encode;
+               addBeanTypeProperties = p.getBoolean(UON_addBeanTypeProperties, 
ctx.addBeanTypeProperties);
+               plainTextParams = 
p.getWithDefault(UonSerializerContext.UON_paramFormat, ctx.paramFormat, 
ParamFormat.class) == ParamFormat.PLAINTEXT;
        }
 
        @Override /* Session */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
index d8887f3..90c71f6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
@@ -45,11 +45,7 @@ public class UrlEncodingParserSession extends 
UonParserSession {
        protected UrlEncodingParserSession(UrlEncodingParserContext ctx, 
ParserSessionArgs args) {
                super(ctx, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(UrlEncodingParserContext.PREFIX)) {
-                       expandedParams = ctx.expandedParams;
-               } else {
-                       expandedParams = 
p.getBoolean(UrlEncodingParserContext.URLENC_expandedParams, 
ctx.expandedParams);
-               }
+               expandedParams = 
p.getBoolean(UrlEncodingParserContext.URLENC_expandedParams, 
ctx.expandedParams);
        }
 
        @Override /* Session */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
index d5a2a3f..ccc2798 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
@@ -51,11 +51,7 @@ public class UrlEncodingSerializerSession extends 
UonSerializerSession {
        protected UrlEncodingSerializerSession(UrlEncodingSerializerContext 
ctx, Boolean encode, SerializerSessionArgs args) {
                super(ctx, encode, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(UrlEncodingSerializerContext.PREFIX)) 
{
-                       expandedParams = ctx.expandedParams;
-               } else {
-                       expandedParams = 
p.getBoolean(UrlEncodingSerializerContext.URLENC_expandedParams, 
ctx.expandedParams);
-               }
+               expandedParams = 
p.getBoolean(UrlEncodingSerializerContext.URLENC_expandedParams, 
ctx.expandedParams);
        }
 
        @Override /* Session */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
index 3351f1e..5041848 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
@@ -61,19 +61,11 @@ public class XmlParserSession extends ReaderParserSession {
        protected XmlParserSession(XmlParserContext ctx, ParserSessionArgs 
args) {
                super(ctx, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(XmlParserContext.PREFIX)) {
-                       validating = ctx.validating;
-                       reporter = ctx.reporter;
-                       resolver = ctx.resolver;
-                       eventAllocator = ctx.eventAllocator;
-                       preserveRootElement = ctx.preserveRootElement;
-               } else {
-                       validating = p.getBoolean(XML_validating, 
ctx.validating);
-                       reporter = (XMLReporter)p.getWithDefault(XML_reporter, 
ctx.reporter);
-                       resolver = (XMLResolver)p.getWithDefault(XML_resolver, 
ctx.resolver);
-                       eventAllocator = 
(XMLEventAllocator)p.getWithDefault(XML_eventAllocator, ctx.eventAllocator);
-                       preserveRootElement = 
p.getBoolean(XML_preserveRootElement, ctx.preserveRootElement);
-               }
+               validating = p.getBoolean(XML_validating, ctx.validating);
+               reporter = p.getWithDefault(XML_reporter, ctx.reporter, 
XMLReporter.class);
+               resolver = p.getWithDefault(XML_resolver, ctx.resolver, 
XMLResolver.class);
+               eventAllocator = p.getWithDefault(XML_eventAllocator, 
ctx.eventAllocator, XMLEventAllocator.class);
+               preserveRootElement = p.getBoolean(XML_preserveRootElement, 
ctx.preserveRootElement);
        }
 
        @Override /* Session */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
index 706acc1..987836a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
@@ -37,7 +37,7 @@ import org.apache.juneau.xml.annotation.*;
  * This class is NOT thread safe.
  * It is typically discarded after one-time use although it can be reused 
within the same thread.
  */
-@SuppressWarnings({"hiding","unchecked","rawtypes"})
+@SuppressWarnings({"unchecked","rawtypes"})
 public class XmlSerializerSession extends WriterSerializerSession {
 
        final boolean
@@ -68,23 +68,13 @@ public class XmlSerializerSession extends 
WriterSerializerSession {
        protected XmlSerializerSession(XmlSerializerContext ctx, 
SerializerSessionArgs args) {
                super(ctx, args);
                ObjectMap p = getProperties();
-               if (! p.containsKeyPrefix(XmlSerializerContext.PREFIX)) {
-                       enableNamespaces = ctx.enableNamespaces;
-                       autoDetectNamespaces = ctx.autoDetectNamespaces;
-                       addNamespaceUrlsToRoot = ctx.addNamespaceUrlsToRoot;
-                       addNamespaces(ctx.namespaces);
-                       defaultNamespace = 
findDefaultNamespace(ctx.defaultNamespace);
-                       xsNamespace = ctx.xsNamespace;
-                       addBeanTypeProperties = ctx.addBeanTypeProperties;
-               } else {
-                       enableNamespaces = p.getBoolean(XML_enableNamespaces, 
ctx.enableNamespaces);
-                       autoDetectNamespaces = 
p.getBoolean(XML_autoDetectNamespaces, ctx.autoDetectNamespaces);
-                       addNamespaceUrlsToRoot = 
p.getBoolean(XML_addNamespaceUrisToRoot, ctx.addNamespaceUrlsToRoot);
-                       namespaces = (p.containsKey(XML_namespaces) ? 
parseNamespaces(p.get(XML_namespaces)) : ctx.namespaces);
-                       defaultNamespace = 
findDefaultNamespace(p.containsKey(XML_defaultNamespace) ? 
p.getString(XML_defaultNamespace) : ctx.defaultNamespace);
-                       xsNamespace = (p.containsKey(XML_xsNamespace) ? 
parseNamespace(p.get(XML_xsNamespace)) : ctx.xsNamespace);
-                       addBeanTypeProperties = 
p.getBoolean(MSGPACK_addBeanTypeProperties, ctx.addBeanTypeProperties);
-               }
+               enableNamespaces = p.getBoolean(XML_enableNamespaces, 
ctx.enableNamespaces);
+               autoDetectNamespaces = p.getBoolean(XML_autoDetectNamespaces, 
ctx.autoDetectNamespaces);
+               addNamespaceUrlsToRoot = 
p.getBoolean(XML_addNamespaceUrisToRoot, ctx.addNamespaceUrlsToRoot);
+               namespaces = (p.containsKey(XML_namespaces) ? 
parseNamespaces(p.get(XML_namespaces)) : ctx.namespaces);
+               defaultNamespace = 
findDefaultNamespace(p.containsKey(XML_defaultNamespace) ? 
p.getString(XML_defaultNamespace) : ctx.defaultNamespace);
+               xsNamespace = (p.containsKey(XML_xsNamespace) ? 
parseNamespace(p.get(XML_xsNamespace)) : ctx.xsNamespace);
+               addBeanTypeProperties = p.getBoolean(XML_addBeanTypeProperties, 
ctx.addBeanTypeProperties);
        }
 
        @Override /* Session */
@@ -111,11 +101,6 @@ public class XmlSerializerSession extends 
WriterSerializerSession {
                return get(null, s);
        }
 
-       private void addNamespaces(Namespace...namespaces) {
-               for (Namespace ns : namespaces)
-                       addNamespace(ns);
-       }
-
        /*
         * Add a namespace to this session.
         *

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
index fcb6bb0..0dc280c 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/DirectoryResource.java
@@ -52,7 +52,7 @@ import org.apache.juneau.utils.*;
        ),
        allowMethodParam="*",
        properties={
-               @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),
+               @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),
                @Property(name="rootDir", value="$S{java.io.tmpdir}"),
                @Property(name="allowViews", value="false"),
                @Property(name="allowDeletes", value="false"),

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
 
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
index 0e9890c..b131e2d 100755
--- 
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
+++ 
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
@@ -71,7 +71,7 @@ import org.apache.juneau.utils.*;
        ),
        allowMethodParam="*",
        properties={
-               @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),
+               @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),
                @Property(name="DirectoryResource.rootDir", value="")
        }
 )

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4b78667/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
 
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
index f02458b..811c928 100755
--- 
a/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
+++ 
b/juneau-microservice/juneau-microservice-server/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
@@ -42,7 +42,7 @@ import org.apache.juneau.transforms.*;
        title="Log files",
        description="Log files from this service",
        properties={
-               @Property(name=HTML_uriAnchorText, value=PROPERTY_NAME),
+               @Property(name=HTML_uriAnchorText, value="PROPERTY_NAME"),
        },
        allowMethodParam="*",
        pojoSwaps={

Reply via email to