This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new f98b764  Annotation improvements.
f98b764 is described below

commit f98b764a609482e9d1f3522a01e9709b35ee7b3a
Author: JamesBognar <[email protected]>
AuthorDate: Fri Nov 6 10:03:28 2020 -0500

    Annotation improvements.
---
 .../apache/juneau/reflection/ClassInfoTest.java    |   6 +-
 .../apache/juneau/reflection/MethodInfoTest.java   |   6 +-
 .../juneau/jena/annotation/RdfAnnotation.java      |  10 +-
 .../jena/annotation/RdfConfigAnnotation.java       |   8 +-
 .../main/java/org/apache/juneau/ConfigApply.java   |  34 ++---
 .../org/apache/juneau/PropertyStoreBuilder.java    |   6 +-
 .../apache/juneau/annotation/BeanAnnotation.java   |  10 +-
 .../juneau/annotation/BeanConfigAnnotation.java    |   8 +-
 .../juneau/annotation/BeanIgnoreAnnotation.java    |  10 +-
 .../apache/juneau/annotation/BeancAnnotation.java  |  10 +-
 .../apache/juneau/annotation/BeanpAnnotation.java  |  10 +-
 .../juneau/annotation/ExampleAnnotation.java       |  10 +-
 .../juneau/annotation/MarshalledAnnotation.java    |  10 +-
 .../juneau/annotation/NamePropertyAnnotation.java  |  10 +-
 .../annotation/ParentPropertyAnnotation.java       |  10 +-
 .../apache/juneau/annotation/SwapAnnotation.java   |  10 +-
 .../apache/juneau/annotation/UriAnnotation.java    |  10 +-
 .../juneau/csv/annotation/CsvAnnotation.java       |  10 +-
 .../juneau/csv/annotation/CsvConfigAnnotation.java |   8 +-
 .../juneau/html/annotation/HtmlAnnotation.java     |  10 +-
 .../html/annotation/HtmlConfigAnnotation.java      |   8 +-
 .../html/annotation/HtmlDocConfigAnnotation.java   |   8 +-
 .../juneau/html/annotation/HtmlLinkAnnotation.java |  10 +-
 .../juneau/http/annotation/BodyAnnotation.java     |  10 +-
 .../juneau/http/annotation/FormDataAnnotation.java |  10 +-
 .../juneau/http/annotation/HeaderAnnotation.java   |  10 +-
 .../juneau/http/annotation/PathAnnotation.java     |  10 +-
 .../juneau/http/annotation/QueryAnnotation.java    |  10 +-
 .../juneau/http/annotation/RequestAnnotation.java  |  10 +-
 .../juneau/http/annotation/ResponseAnnotation.java |  10 +-
 .../http/annotation/ResponseBodyAnnotation.java    |  10 +-
 .../http/annotation/ResponseHeaderAnnotation.java  |  10 +-
 .../http/annotation/ResponseStatusAnnotation.java  |  10 +-
 .../juneau/jso/annotation/JsoAnnotation.java       |  10 +-
 .../juneau/jso/annotation/JsoConfigAnnotation.java |   8 +-
 .../juneau/json/annotation/JsonAnnotation.java     |  10 +-
 .../json/annotation/JsonConfigAnnotation.java      |   8 +-
 .../jsonschema/JsonSchemaBeanPropertyMeta.java     |   2 +-
 .../juneau/jsonschema/JsonSchemaClassMeta.java     |   2 +-
 .../org/apache/juneau/jsonschema/SchemaUtils.java  | 148 ++++-----------------
 .../annotation/ExternalDocsAnnotation.java         |  22 +++
 .../annotation/JsonSchemaConfigAnnotation.java     |   8 +-
 .../jsonschema/annotation/SchemaAnnotation.java    |  92 ++++++++++++-
 .../jsonschema/annotation/SubItemsAnnotation.java  |  38 ++++++
 .../msgpack/annotation/MsgPackAnnotation.java      |  10 +-
 .../annotation/MsgPackConfigAnnotation.java        |   8 +-
 .../juneau/oapi/annotation/OpenApiAnnotation.java  |  10 +-
 .../oapi/annotation/OpenApiConfigAnnotation.java   |   8 +-
 .../parser/annotation/ParserConfigAnnotation.java  |   8 +-
 .../plaintext/annotation/PlainTextAnnotation.java  |  10 +-
 .../annotation/PlainTextConfigAnnotation.java      |   8 +-
 .../annotation/SerializerConfigAnnotation.java     |   8 +-
 .../juneau/soap/annotation/SoapXmlAnnotation.java  |  10 +-
 .../soap/annotation/SoapXmlConfigAnnotation.java   |   8 +-
 .../juneau/uon/annotation/UonAnnotation.java       |  10 +-
 .../juneau/uon/annotation/UonConfigAnnotation.java |   8 +-
 .../annotation/UrlEncodingAnnotation.java          |  10 +-
 .../annotation/UrlEncodingConfigAnnotation.java    |   8 +-
 .../juneau/xml/annotation/XmlAnnotation.java       |  10 +-
 .../juneau/xml/annotation/XmlConfigAnnotation.java |   8 +-
 .../juneau/rest/annotation/RestAnnotation.java     |   8 +-
 .../rest/annotation/RestMethodAnnotation.java      |   8 +-
 62 files changed, 440 insertions(+), 398 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
index f2716b2..6ea45e4 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ClassInfoTest.java
@@ -64,11 +64,11 @@ public class ClassInfoTest {
        }
 
        public static class AConfigApply extends ConfigApply<AConfig> {
-               protected AConfigApply(Class<AConfig> c, VarResolverSession r) {
-                       super(c, r);
+               protected AConfigApply(Class<AConfig> c, VarResolverSession vr) 
{
+                       super(c, vr);
                }
                @Override
-               public void apply(AnnotationInfo<AConfig> a, 
PropertyStoreBuilder ps) {
+               public void apply(AnnotationInfo<AConfig> a, 
PropertyStoreBuilder ps, VarResolverSession vr) {
                }
        }
 
diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
index 1a87df6..4b8d304 100644
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/MethodInfoTest.java
@@ -59,11 +59,11 @@ public class MethodInfoTest {
        }
 
        public static class AConfigApply extends ConfigApply<AConfig> {
-               protected AConfigApply(Class<AConfig> c, VarResolverSession r) {
-                       super(c, r);
+               protected AConfigApply(Class<AConfig> c, VarResolverSession vr) 
{
+                       super(c, vr);
                }
                @Override
-               public void apply(AnnotationInfo<AConfig> a, 
PropertyStoreBuilder ps) {
+               public void apply(AnnotationInfo<AConfig> a, 
PropertyStoreBuilder ps, VarResolverSession vr) {
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
index 7dc5770..7669a2d 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
@@ -234,20 +234,20 @@ public class RdfAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Rdf> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Rdf> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Rdf> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Rdf> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Rdf a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
index 73dc85a..c4ff869 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
@@ -35,14 +35,14 @@ public class RdfConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<RdfConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<RdfConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<RdfConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<RdfConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        RdfConfig a = ai.getAnnotation();
                        if (! a.language().isEmpty())
                                psb.set(RDF_language, string(a.language()));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
index df3b2a2..c69bd98 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
@@ -31,36 +31,28 @@ import org.apache.juneau.svl.*;
  */
 public abstract class ConfigApply<T extends Annotation> {
 
-       private final VarResolverSession r;
+       private final VarResolverSession vr;
        private final Class<T> c;
 
        /**
         * Constructor.
         *
         * @param c The annotation class.
-        * @param r The string resolver to use for resolving strings.
+        * @param vr The string resolver to use for resolving strings.
         */
-       protected ConfigApply(Class<T> c, VarResolverSession r) {
-               this.r = r == null ? VarResolver.DEFAULT.createSession() : r;
+       protected ConfigApply(Class<T> c, VarResolverSession vr) {
+               this.vr = vr == null ? VarResolver.DEFAULT.createSession() : vr;
                this.c = c;
        }
 
        /**
-        * Returns the var resolver that was added to this object.
-        *
-        * @return The var resolver that was added to this object.
-        */
-       protected VarResolverSession getVarResolver() {
-               return r;
-       }
-
-       /**
         * Apply the specified annotation to the specified property store 
builder.
         *
         * @param a The annotation.
         * @param ps The property store builder.
+        * @param vr The var resolver.  Should be the same as the one passed in 
through the constructor.
         */
-       public abstract void apply(AnnotationInfo<T> a, PropertyStoreBuilder 
ps);
+       public abstract void apply(AnnotationInfo<T> a, PropertyStoreBuilder 
ps, VarResolverSession vr);
 
 
        /**
@@ -70,7 +62,7 @@ public abstract class ConfigApply<T extends Annotation> {
         * @return The resolved string.
         */
        protected String string(String in) {
-               return r.resolve(in);
+               return vr.resolve(in);
        }
 
        /**
@@ -82,7 +74,7 @@ public abstract class ConfigApply<T extends Annotation> {
        protected String[] strings(String[] in) {
                String[] out = new String[in.length];
                for (int i = 0; i < in.length; i++)
-                       out[i] = r.resolve(in[i]);
+                       out[i] = vr.resolve(in[i]);
                return out;
        }
 
@@ -93,7 +85,7 @@ public abstract class ConfigApply<T extends Annotation> {
         * @return An array with resolved strings.
         */
        protected String[] strings(String in) {
-               in = r.resolve(in);
+               in = vr.resolve(in);
                return StringUtils.split(in);
        }
 
@@ -124,7 +116,7 @@ public abstract class ConfigApply<T extends Annotation> {
         * @return The resolved boolean.
         */
        public boolean bool(String in) {
-               return Boolean.parseBoolean(r.resolve(in));
+               return Boolean.parseBoolean(vr.resolve(in));
        }
 
        /**
@@ -136,7 +128,7 @@ public abstract class ConfigApply<T extends Annotation> {
         */
        protected int integer(String in, String loc) {
                try {
-                       return Integer.parseInt(r.resolve(in));
+                       return Integer.parseInt(vr.resolve(in));
                } catch (NumberFormatException e) {
                        throw new ConfigException("Invalid syntax for integer 
on annotation @{0}({1}): {2}", c.getSimpleName(), loc, in);
                }
@@ -151,7 +143,7 @@ public abstract class ConfigApply<T extends Annotation> {
         */
        protected Visibility visibility(String in, String loc) {
                try {
-                       return Visibility.valueOf(r.resolve(in));
+                       return Visibility.valueOf(vr.resolve(in));
                } catch (IllegalArgumentException e) {
                        throw new ConfigException("Invalid syntax for 
visibility on annotation @{0}({1}): {2}", c.getSimpleName(), loc, in);
                }
@@ -211,6 +203,6 @@ public abstract class ConfigApply<T extends Annotation> {
                }
 
                @Override /* ConfigApply */
-               public void apply(AnnotationInfo<Annotation> a, 
PropertyStoreBuilder ps) {}
+               public void apply(AnnotationInfo<Annotation> a, 
PropertyStoreBuilder ps, VarResolverSession vr) {}
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
index 846fc74..c5dcf1a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
@@ -105,14 +105,14 @@ public class PropertyStoreBuilder {
         * Applies the settings in the specified annotations to this property 
store.
         *
         * @param al The list of annotations to apply.
-        * @param r The string resolver used to resolve any variables in the 
annotations.
+        * @param vr The string resolver used to resolve any variables in the 
annotations.
         * @return This object (for method chaining).
         */
        @SuppressWarnings("unchecked")
-       public PropertyStoreBuilder applyAnnotations(AnnotationList al, 
VarResolverSession r) {
+       public PropertyStoreBuilder applyAnnotations(AnnotationList al, 
VarResolverSession vr) {
                for (AnnotationInfo<?> ai : al.sort()) {
                        try {
-                               
ai.getConfigApply(r).apply((AnnotationInfo<Annotation>)ai, this);
+                               
ai.getConfigApply(vr).apply((AnnotationInfo<Annotation>)ai, this, vr);
                        } catch (ConfigException ex) {
                                throw ex;
                        } catch (Exception ex) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
index 847c42c..3a39ed0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
@@ -497,20 +497,20 @@ public class BeanAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Bean> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Bean> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Bean> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Bean> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Bean a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
index f9ee108..24537eb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
@@ -36,14 +36,14 @@ public class BeanConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<BeanConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<BeanConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<BeanConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<BeanConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        BeanConfig a = ai.getAnnotation();
 
                        if (! a.beanClassVisibility().isEmpty())
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
index aba6a69..6ecf4ec 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
@@ -158,20 +158,20 @@ public class BeanIgnoreAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<BeanIgnore> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<BeanIgnore> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<BeanIgnore> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<BeanIgnore> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        BeanIgnore a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
index 20de1f7..70e11a4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
@@ -144,20 +144,20 @@ public class BeancAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Beanc> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Beanc> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Beanc> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Beanc> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Beanc a = ai.getAnnotation();
 
                        if (isEmpty(a.on()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
index 437e80e..c7237bd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
@@ -300,20 +300,20 @@ public class BeanpAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Beanp> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Beanp> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Beanp> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Beanp> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Beanp a = ai.getAnnotation();
 
                        if (isEmpty(a.on()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
index 4776e19..989cc8f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
@@ -174,20 +174,20 @@ public class ExampleAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Example> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Example> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Example> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Example> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Example a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
index 7147613..c7ccddd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
@@ -180,20 +180,20 @@ public class MarshalledAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Marshalled> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Marshalled> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Marshalled> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Marshalled> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Marshalled a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
index ca8f919..dadb499 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
@@ -129,20 +129,20 @@ public class NamePropertyAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<NameProperty> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<NameProperty> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<NameProperty> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<NameProperty> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        NameProperty a = ai.getAnnotation();
 
                        if (isEmpty(a.on()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
index 1c27675..0622111 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
@@ -129,20 +129,20 @@ public class ParentPropertyAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<ParentProperty> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<ParentProperty> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<ParentProperty> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<ParentProperty> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        ParentProperty a = ai.getAnnotation();
 
                        if (isEmpty(a.on()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
index 68f2d17..045b801 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
@@ -233,20 +233,20 @@ public class SwapAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Swap> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Swap> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Swap> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Swap> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Swap a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
index e1836e5..c40ae8b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
@@ -152,20 +152,20 @@ public class UriAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Uri> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Uri> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Uri> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Uri> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Uri a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
index e4495c2..8cfd299 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
@@ -153,20 +153,20 @@ public class CsvAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Csv> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Csv> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Csv> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Csv> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Csv a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java
index f2fe0dc..39da8b8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java
@@ -32,14 +32,14 @@ public class CsvConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<CsvConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<CsvConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<CsvConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<CsvConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        CsvConfig a = ai.getAnnotation();
 
                        if (a.applyCsv().length > 0)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
index 606e43b..e0b9fbf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
@@ -273,20 +273,20 @@ public class HtmlAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Html> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Html> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Html> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Html> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Html a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
index 156cdc5..891a8ea 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
@@ -33,14 +33,14 @@ public class HtmlConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<HtmlConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<HtmlConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<HtmlConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<HtmlConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        HtmlConfig a = ai.getAnnotation();
                        if (! a.addBeanTypes().isEmpty())
                                psb.set(HTML_addBeanTypes, 
bool(a.addBeanTypes()));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
index f413b45..5e09173 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
@@ -37,14 +37,14 @@ public class HtmlDocConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<HtmlDocConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<HtmlDocConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<HtmlDocConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<HtmlDocConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        HtmlDocConfig a = ai.getAnnotation();
                        if (a.aside().length > 0)
                                psb.set(HTMLDOC_aside, resolveList(a.aside(), 
psb.peek(String[].class, HTMLDOC_aside)));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
index 54f9904..e1035b7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
@@ -180,20 +180,20 @@ public class HtmlLinkAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<HtmlLink> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<HtmlLink> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<HtmlLink> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<HtmlLink> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        HtmlLink a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java
index 393ac67..680f77f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java
@@ -365,20 +365,20 @@ public class BodyAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Body> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Body> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Body> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Body> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Body a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
index ded816a..038bcb8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
@@ -1082,20 +1082,20 @@ public class FormDataAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<FormData> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<FormData> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<FormData> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<FormData> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        FormData a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
index 57d54a7..43ad923 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
@@ -1083,20 +1083,20 @@ public class HeaderAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Header> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Header> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Header> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Header> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Header a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
index cca53cf..7891f35 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
@@ -993,20 +993,20 @@ public class PathAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Path> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Path> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Path> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Path> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Path a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
index 5ad2303..4cc01d7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
@@ -1082,20 +1082,20 @@ public class QueryAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Query> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Query> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Query> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Query> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Query a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
index db421da..0972a2f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
@@ -183,20 +183,20 @@ public class RequestAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Request> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Request> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Request> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Request> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Request a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
index 5c02772..4629040 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
@@ -409,20 +409,20 @@ public class ResponseAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Response> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Response> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Response> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Response> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Response a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
index 278fe49..716df51 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
@@ -147,20 +147,20 @@ public class ResponseBodyAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<ResponseBody> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<ResponseBody> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<ResponseBody> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<ResponseBody> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        ResponseBody a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
index af7c1d0..0a51e11 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
@@ -983,20 +983,20 @@ public class ResponseHeaderAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<ResponseHeader> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<ResponseHeader> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<ResponseHeader> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<ResponseHeader> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        ResponseHeader a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java
index 0eb53ac..f3cdc67 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java
@@ -147,20 +147,20 @@ public class ResponseStatusAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<ResponseStatus> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<ResponseStatus> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<ResponseStatus> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<ResponseStatus> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        ResponseStatus a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
index 67977f2..3db4805 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
@@ -153,20 +153,20 @@ public class JsoAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Jso> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Jso> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Jso> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Jso> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Jso a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java
index 0e54f09..ae6db69 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java
@@ -32,14 +32,14 @@ public class JsoConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<JsoConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<JsoConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<JsoConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<JsoConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        JsoConfig a = ai.getAnnotation();
 
                        if (a.applyJso().length > 0)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
index 320ad5f..a999c11 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
@@ -175,20 +175,20 @@ public class JsonAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Json> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Json> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Json> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Json> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Json a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
index ee69876..6a7ebcf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
@@ -34,14 +34,14 @@ public class JsonConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<JsonConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<JsonConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<JsonConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<JsonConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        JsonConfig a = ai.getAnnotation();
                        if (! a.addBeanTypes().isEmpty())
                                psb.set(JSON_addBeanTypes, 
bool(a.addBeanTypes()));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java
index adda3c9..3d2ecf4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java
@@ -43,7 +43,7 @@ public class JsonSchemaBeanPropertyMeta extends 
ExtendedBeanPropertyMeta {
 
                try {
                        for (Schema s : bpm.getAnnotations(Schema.class))
-                               schema.appendAll(SchemaUtils.asMap(s));
+                               schema.appendAll(SchemaAnnotation.asMap(s));
                } catch (ParseException e) {
                        throw new RuntimeException(e);
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java
index 1745339..78bcc0f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java
@@ -35,7 +35,7 @@ public class JsonSchemaClassMeta extends ExtendedClassMeta {
                super(cm);
                try {
                        for (Schema a : cm.getAnnotations(Schema.class))
-                               schema.appendAll(SchemaUtils.asMap(a));
+                               schema.appendAll(SchemaAnnotation.asMap(a));
                } catch (ParseException e) {
                        throw new RuntimeException(e);
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
index 85e9658..99fd055 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
@@ -18,68 +18,21 @@ import java.util.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
-import org.apache.juneau.jsonschema.annotation.*;
 import org.apache.juneau.parser.*;
 
 /**
  * Utilities for working with the schema annotations.
  */
-@Deprecated
 public class SchemaUtils {
 
        /**
-        * Converts the specified <ja>@Schema</ja> annotation into a generic 
map.
+        * Concatenates and parses a string array as a JSON object.
         *
-        * @param a The annotation instance.  Can be <jk>null</jk>.
-        * @return The schema converted to a map, or and empty map if the 
annotation was null.
-        * @throws ParseException Malformed input encountered.
+        * @param ss The array to concatenate and parse.
+        * @return The parsed contents.
+        * @throws ParseException Invalid JSON encountered.
         */
-       public static OMap asMap(Schema a) throws ParseException {
-               if (a == null)
-                       return OMap.EMPTY_MAP;
-               OMap om = new OMap();
-               if (SchemaAnnotation.empty(a))
-                       return om;
-               if (a.value().length > 0)
-                       om.putAll(parseMap(a.value()));
-       return om
-               .ase("additionalProperties", toOMap(a.additionalProperties()))
-               .ase("allOf", joinnl(a.allOf()))
-               .ase("collectionFormat", a.collectionFormat(), a.cf())
-               .ase("default", joinnl(a._default(), a.df()))
-               .ase("discriminator", a.discriminator())
-               .ase("description", joinnl(a.description(), a.d()))
-               .ase("enum", toSet(a._enum()), toSet(a.e()))
-               .ase("examples", parseMap(a.examples()), parseMap(a.exs()))
-               .asf("exclusiveMaximum", a.exclusiveMaximum() || a.emax())
-               .asf("exclusiveMinimum", a.exclusiveMinimum() || a.emin())
-               .ase("externalDocs", merge(om.getMap("externalDocs"), 
a.externalDocs()))
-               .ase("format", a.format(), a.f())
-               .ase("ignore", a.ignore() ? "true" : null)
-               .ase("items", merge(om.getMap("items"), a.items()))
-               .ase("maximum", a.maximum(), a.max())
-               .asmo("maxItems", a.maxItems(), a.maxi())
-               .asmo("maxLength", a.maxLength(), a.maxl())
-               .asmo("maxProperties", a.maxProperties(), a.maxp())
-               .ase("minimum", a.minimum(), a.min())
-               .asmo("minItems", a.minItems(), a.mini())
-               .asmo("minLength", a.minLength(), a.minl())
-               .asmo("minProperties", a.minProperties(), a.minp())
-               .ase("multipleOf", a.multipleOf(), a.mo())
-               .ase("pattern", a.pattern(), a.p())
-               .ase("properties", toOMap(a.properties()))
-               .asf("readOnly", a.readOnly() || a.ro())
-               .asf("required", a.required() || a.r())
-               .ase("title", a.title())
-               .ase("type", a.type(), a.t())
-               .asf("uniqueItems", a.uniqueItems() || a.ui())
-               .ase("xml", joinnl(a.xml()))
-               .ase("x-example", joinnl(a.example(), a.ex()))
-               .ase("$ref", a.$ref())
-       ;
-       }
-
-       private static OMap toOMap(String[] ss) throws ParseException {
+       public static OMap parseMap(String[] ss) throws ParseException {
                if (ss.length == 0)
                        return null;
                String s = joinnl(ss);
@@ -90,7 +43,14 @@ public class SchemaUtils {
                return OMap.ofJson(s);
        }
 
-       private static OMap parseMap(Object o) throws ParseException {
+       /**
+        * Parses a generic object as JSON and converts it to an {@link OMap}.
+        *
+        * @param o The object to convert.
+        * @return The parsed contents.
+        * @throws ParseException Invalid JSON encountered.
+        */
+       public static OMap parseMap(Object o) throws ParseException {
                if (o == null)
                        return null;
                if (o instanceof String[])
@@ -110,7 +70,14 @@ public class SchemaUtils {
                throw new ParseException("Unexpected data type ''{0}''.  
Expected OMap or String.", o.getClass().getName());
        }
 
-       private static Set<String> toSet(String[] ss) throws ParseException {
+       /**
+        * Concatenates and parses a string array as JSON array or 
comma-delimited list.
+        *
+        * @param ss The array to concatenate and parse.
+        * @return The parsed contents.
+        * @throws ParseException Invalid JSON encountered.
+        */
+       public static Set<String> parseSet(String[] ss) throws ParseException {
                if (ss.length == 0)
                        return null;
                String s = joinnl(ss);
@@ -122,72 +89,13 @@ public class SchemaUtils {
                return set;
        }
 
-       private static OMap merge(OMap om, Items a) throws ParseException {
-               if (ItemsAnnotation.empty(a))
-                       return om;
-               if (a.value().length > 0)
-                       om.putAll(parseMap(a.value()));
-               return om
-                       .ase("collectionFormat", a.collectionFormat(), a.cf())
-                       .ase("default", joinnl(a._default(), a.df()))
-                       .ase("enum", toSet(a._enum()), toSet(a.e()))
-                       .ase("format", a.format(), a.f())
-                       .asf("exclusiveMaximum", a.exclusiveMaximum() || 
a.emax())
-                       .asf("exclusiveMinimum", a.exclusiveMinimum() || 
a.emin())
-                       .ase("items", merge(om.getMap("items"), a.items()))
-                       .ase("maximum", a.maximum(), a.max())
-                       .asmo("maxItems", a.maxItems(), a.maxi())
-                       .asmo("maxLength", a.maxLength(), a.maxl())
-                       .ase("minimum", a.minimum(), a.min())
-                       .asmo("minItems", a.minItems(), a.mini())
-                       .asmo("minLength", a.minLength(), a.minl())
-                       .ase("multipleOf", a.multipleOf(), a.mo())
-                       .ase("pattern", a.pattern(), a.p())
-                       .asf("uniqueItems", a.uniqueItems() || a.ui())
-                       .ase("type", a.type(), a.t())
-                       .ase("$ref", a.$ref())
-               ;
-       }
-
-       private static OMap merge(OMap om, SubItems a) throws ParseException {
-               if (SubItemsAnnotation.empty(a))
-                       return om;
-               if (a.value().length > 0)
-                       om.putAll(parseMap(a.value()));
-               return om
-                       .ase("collectionFormat", a.collectionFormat(), a.cf())
-                       .ase("default", joinnl(a._default(), a.df()))
-                       .ase("enum", toSet(a._enum()), toSet(a.e()))
-                       .asf("exclusiveMaximum", a.exclusiveMaximum() || 
a.emax())
-                       .asf("exclusiveMinimum", a.exclusiveMinimum() || 
a.emin())
-                       .ase("format", a.format(), a.f())
-                       .ase("items", toOMap(a.items()))
-                       .ase("maximum", a.maximum(), a.max())
-                       .asmo("maxItems", a.maxItems(), a.maxi())
-                       .asmo("maxLength", a.maxLength(), a.maxl())
-                       .ase("minimum", a.minimum(), a.min())
-                       .asmo("minItems", a.minItems(), a.mini())
-                       .asmo("minLength", a.minLength(), a.minl())
-                       .ase("multipleOf", a.multipleOf(), a.mo())
-                       .ase("pattern", a.pattern(), a.p())
-                       .ase("type", a.type(), a.t())
-                       .asf("uniqueItems", a.uniqueItems() || a.ui())
-                       .ase("$ref", a.$ref())
-               ;
-       }
-
-       private static OMap merge(OMap om, ExternalDocs a) throws 
ParseException {
-               if (ExternalDocsAnnotation.empty(a))
-                       return om;
-               if (a.value().length > 0)
-                       om.putAll(parseMap(a.value()));
-               return om
-                       .ase("description", joinnl(a.description()))
-                       .ase("url", a.url())
-               ;
-       }
-
-       private static String joinnl(String[]...s) {
+       /**
+        * Joins an array of strings with newlines.
+        *
+        * @param s The array to join.
+        * @return A new joined string.
+        */
+       public static String joinnl(String[]...s) {
                for (String[] ss : s) {
                        if (ss.length != 0)
                        return StringUtils.joinnl(ss).trim();
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/ExternalDocsAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/ExternalDocsAnnotation.java
index d58c19f..15b10d6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/ExternalDocsAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/ExternalDocsAnnotation.java
@@ -13,11 +13,14 @@
 package org.apache.juneau.jsonschema.annotation;
 
 import static org.apache.juneau.internal.ArrayUtils.*;
+import static org.apache.juneau.jsonschema.SchemaUtils.*;
 
 import java.lang.annotation.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
+import org.apache.juneau.parser.*;
 import org.apache.juneau.svl.*;
 
 /**
@@ -64,6 +67,25 @@ public class ExternalDocsAnnotation {
        }
 
        /**
+        * Merges the contents of the specified annotation into the specified 
generic map.
+        *
+        * @param om The map to copy the contents to.
+        * @param a The annotation to apply.
+        * @return The same map with the annotation contents applied.
+        * @throws ParseException Invalid JSON found in value.
+        */
+       public static OMap merge(OMap om, ExternalDocs a) throws ParseException 
{
+               if (ExternalDocsAnnotation.empty(a))
+                       return om;
+               if (a.value().length > 0)
+                       om.putAll(parseMap(a.value()));
+               return om
+                       .ase("description", joinnl(a.description()))
+                       .ase("url", a.url())
+               ;
+       }
+
+       /**
         * Builder class for the {@link ExternalDocs} annotation.
         *
         * <ul class='seealso'>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
index 9fc97cb..6000bc2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
@@ -35,14 +35,14 @@ public class JsonSchemaConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<JsonSchemaConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<JsonSchemaConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<JsonSchemaConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<JsonSchemaConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        JsonSchemaConfig a = ai.getAnnotation();
                        if (! a.addDescriptionsTo().isEmpty())
                                psb.set(JSONSCHEMA_addDescriptionsTo, 
string(a.addDescriptionsTo()));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
index 84d373a..d487252 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
@@ -16,12 +16,15 @@ import static java.lang.annotation.ElementType.*;
 import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.BeanContext.*;
 import static org.apache.juneau.internal.ArrayUtils.*;
+import static org.apache.juneau.jsonschema.SchemaUtils.*;
 
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
+import org.apache.juneau.parser.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.svl.*;
 
@@ -145,6 +148,85 @@ public class SchemaAnnotation {
        }
 
        /**
+        * Converts the specified <ja>@Schema</ja> annotation into a generic 
map.
+        *
+        * @param a The annotation instance.  Can be <jk>null</jk>.
+        * @return The schema converted to a map, or and empty map if the 
annotation was null.
+        * @throws ParseException Malformed input encountered.
+        */
+       public static OMap asMap(Schema a) throws ParseException {
+               if (a == null)
+                       return OMap.EMPTY_MAP;
+               OMap om = new OMap();
+               if (SchemaAnnotation.empty(a))
+                       return om;
+               if (a.value().length > 0)
+                       om.putAll(parseMap(a.value()));
+               return om
+                       .ase("additionalProperties", 
parseMap(a.additionalProperties()))
+                       .ase("allOf", joinnl(a.allOf()))
+                       .ase("collectionFormat", a.collectionFormat(), a.cf())
+                       .ase("default", joinnl(a._default(), a.df()))
+                       .ase("discriminator", a.discriminator())
+                       .ase("description", joinnl(a.description(), a.d()))
+                       .ase("enum", parseSet(a._enum()), parseSet(a.e()))
+                       .ase("examples", parseMap(a.examples()), 
parseMap(a.exs()))
+                       .asf("exclusiveMaximum", a.exclusiveMaximum() || 
a.emax())
+                       .asf("exclusiveMinimum", a.exclusiveMinimum() || 
a.emin())
+                       .ase("externalDocs", 
ExternalDocsAnnotation.merge(om.getMap("externalDocs"), a.externalDocs()))
+                       .ase("format", a.format(), a.f())
+                       .ase("ignore", a.ignore() ? "true" : null)
+                       .ase("items", merge(om.getMap("items"), a.items()))
+                       .ase("maximum", a.maximum(), a.max())
+                       .asmo("maxItems", a.maxItems(), a.maxi())
+                       .asmo("maxLength", a.maxLength(), a.maxl())
+                       .asmo("maxProperties", a.maxProperties(), a.maxp())
+                       .ase("minimum", a.minimum(), a.min())
+                       .asmo("minItems", a.minItems(), a.mini())
+                       .asmo("minLength", a.minLength(), a.minl())
+                       .asmo("minProperties", a.minProperties(), a.minp())
+                       .ase("multipleOf", a.multipleOf(), a.mo())
+                       .ase("pattern", a.pattern(), a.p())
+                       .ase("properties", parseMap(a.properties()))
+                       .asf("readOnly", a.readOnly() || a.ro())
+                       .asf("required", a.required() || a.r())
+                       .ase("title", a.title())
+                       .ase("type", a.type(), a.t())
+                       .asf("uniqueItems", a.uniqueItems() || a.ui())
+                       .ase("xml", joinnl(a.xml()))
+                       .ase("x-example", joinnl(a.example(), a.ex()))
+                       .ase("$ref", a.$ref())
+               ;
+       }
+
+       private static OMap merge(OMap om, Items a) throws ParseException {
+               if (ItemsAnnotation.empty(a))
+                       return om;
+               if (a.value().length > 0)
+                       om.putAll(parseMap(a.value()));
+               return om
+                       .ase("collectionFormat", a.collectionFormat(), a.cf())
+                       .ase("default", joinnl(a._default(), a.df()))
+                       .ase("enum", parseSet(a._enum()), parseSet(a.e()))
+                       .ase("format", a.format(), a.f())
+                       .asf("exclusiveMaximum", a.exclusiveMaximum() || 
a.emax())
+                       .asf("exclusiveMinimum", a.exclusiveMinimum() || 
a.emin())
+                       .ase("items", 
SubItemsAnnotation.merge(om.getMap("items"), a.items()))
+                       .ase("maximum", a.maximum(), a.max())
+                       .asmo("maxItems", a.maxItems(), a.maxi())
+                       .asmo("maxLength", a.maxLength(), a.maxl())
+                       .ase("minimum", a.minimum(), a.min())
+                       .asmo("minItems", a.minItems(), a.mini())
+                       .asmo("minLength", a.minLength(), a.minl())
+                       .ase("multipleOf", a.multipleOf(), a.mo())
+                       .ase("pattern", a.pattern(), a.p())
+                       .asf("uniqueItems", a.uniqueItems() || a.ui())
+                       .ase("type", a.type(), a.t())
+                       .ase("$ref", a.$ref())
+               ;
+       }
+
+       /**
         * Builder class for the {@link Schema} annotation.
         *
         * <ul class='seealso'>
@@ -1204,20 +1286,20 @@ public class SchemaAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Schema> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Schema> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Schema> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<Schema> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        Schema a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SubItemsAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SubItemsAnnotation.java
index 8d6db9a..691d915 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SubItemsAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SubItemsAnnotation.java
@@ -13,11 +13,14 @@
 package org.apache.juneau.jsonschema.annotation;
 
 import static org.apache.juneau.internal.ArrayUtils.*;
+import static org.apache.juneau.jsonschema.SchemaUtils.*;
 
 import java.lang.annotation.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
+import org.apache.juneau.parser.*;
 import org.apache.juneau.svl.*;
 
 /**
@@ -96,6 +99,41 @@ public class SubItemsAnnotation {
        }
 
        /**
+        * Merges the contents of the specified annotation into the specified 
generic map.
+        *
+        * @param om The map to copy the contents to.
+        * @param a The annotation to apply.
+        * @return The same map with the annotation contents applied.
+        * @throws ParseException Invalid JSON found in value.
+        */
+       public static OMap merge(OMap om, SubItems a) throws ParseException {
+               if (SubItemsAnnotation.empty(a))
+                       return om;
+               if (a.value().length > 0)
+                       om.putAll(parseMap(a.value()));
+               return om
+                       .ase("collectionFormat", a.collectionFormat(), a.cf())
+                       .ase("default", joinnl(a._default(), a.df()))
+                       .ase("enum", parseSet(a._enum()), parseSet(a.e()))
+                       .asf("exclusiveMaximum", a.exclusiveMaximum() || 
a.emax())
+                       .asf("exclusiveMinimum", a.exclusiveMinimum() || 
a.emin())
+                       .ase("format", a.format(), a.f())
+                       .ase("items", parseMap(a.items()))
+                       .ase("maximum", a.maximum(), a.max())
+                       .asmo("maxItems", a.maxItems(), a.maxi())
+                       .asmo("maxLength", a.maxLength(), a.maxl())
+                       .ase("minimum", a.minimum(), a.min())
+                       .asmo("minItems", a.minItems(), a.mini())
+                       .asmo("minLength", a.minLength(), a.minl())
+                       .ase("multipleOf", a.multipleOf(), a.mo())
+                       .ase("pattern", a.pattern(), a.p())
+                       .ase("type", a.type(), a.t())
+                       .asf("uniqueItems", a.uniqueItems() || a.ui())
+                       .ase("$ref", a.$ref())
+               ;
+       }
+
+       /**
         * Builder class for the {@link SubItems} annotation.
         *
         * <ul class='seealso'>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
index 04f4ab1..12f035a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
@@ -153,20 +153,20 @@ public class MsgPackAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<MsgPack> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<MsgPack> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<MsgPack> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<MsgPack> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        MsgPack a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
index 3bde67e..5c42fd6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
@@ -33,14 +33,14 @@ public class MsgPackConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<MsgPackConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<MsgPackConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<MsgPackConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<MsgPackConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        MsgPackConfig a = ai.getAnnotation();
 
                        if (! a.addBeanTypes().isEmpty())
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
index 46fc0b8..29b559c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
@@ -153,20 +153,20 @@ public class OpenApiAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<OpenApi> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<OpenApi> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<OpenApi> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<OpenApi> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        OpenApi a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
index fb131d1..5cec8b6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
@@ -33,14 +33,14 @@ public class OpenApiConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<OpenApiConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<OpenApiConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<OpenApiConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<OpenApiConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        OpenApiConfig a = ai.getAnnotation();
 
                        if (a.applyOpenApi().length > 0)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
index dec4431..b538ac8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
@@ -36,14 +36,14 @@ public class ParserConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<ParserConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<ParserConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<ParserConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<ParserConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        ParserConfig a = ai.getAnnotation();
                        if (! a.autoCloseStreams().isEmpty())
                                psb.set(PARSER_autoCloseStreams, 
bool(a.autoCloseStreams()));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
index 06d9f29..dd033db 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
@@ -153,20 +153,20 @@ public class PlainTextAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<PlainText> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<PlainText> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<PlainText> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<PlainText> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        PlainText a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java
index 54193a2..421076c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java
@@ -32,14 +32,14 @@ public class PlainTextConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<PlainTextConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<PlainTextConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<PlainTextConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<PlainTextConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        PlainTextConfig a = ai.getAnnotation();
 
                        if (a.applyPlainText().length > 0)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
index 1c7fd0d..e07961b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
@@ -36,14 +36,14 @@ public class SerializerConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<SerializerConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<SerializerConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<SerializerConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<SerializerConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        SerializerConfig a = ai.getAnnotation();
                        if (! a.addBeanTypes().isEmpty())
                                psb.set(SERIALIZER_addBeanTypes, 
bool(a.addBeanTypes()));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
index 166c3b2..53b4ddc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
@@ -153,20 +153,20 @@ public class SoapXmlAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<SoapXml> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<SoapXml> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<SoapXml> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<SoapXml> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        SoapXml a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
index 3384b03..aa095ce 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
@@ -33,14 +33,14 @@ public class SoapXmlConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<SoapXmlConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<SoapXmlConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<SoapXmlConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<SoapXmlConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        SoapXmlConfig a = ai.getAnnotation();
 
                        if (! a.soapAction().isEmpty())
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
index e6585ce..97be1e8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
@@ -153,20 +153,20 @@ public class UonAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Uon> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Uon> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Uon> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Uon> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Uon a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
index 5361368..84a1966 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
@@ -34,14 +34,14 @@ public class UonConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<UonConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<UonConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<UonConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<UonConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        UonConfig a = ai.getAnnotation();
                        if (! a.addBeanTypes().isEmpty())
                                psb.set(UON_addBeanTypes, 
bool(a.addBeanTypes()));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
index d7a789a..82a22e8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
@@ -177,20 +177,20 @@ public class UrlEncodingAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<UrlEncoding> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<UrlEncoding> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<UrlEncoding> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<UrlEncoding> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        UrlEncoding a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java
index de6b60c..9e76cbd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java
@@ -33,14 +33,14 @@ public class UrlEncodingConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<UrlEncodingConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<UrlEncodingConfig> c, VarResolverSession vr) 
{
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<UrlEncodingConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<UrlEncodingConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        UrlEncodingConfig a = ai.getAnnotation();
 
                        if (! a.expandedParams().isEmpty()) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
index 5638e43..68d43bb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
@@ -231,20 +231,20 @@ public class XmlAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Xml> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Xml> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Xml> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Xml> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Xml a = ai.getAnnotation();
 
                        if (isEmpty(a.on()) && isEmpty(a.onClass()))
                                return;
 
-                       psb.prependTo(BEAN_annotations, copy(a, 
getVarResolver()));
+                       psb.prependTo(BEAN_annotations, copy(a, vr));
                }
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
index beade15..bce66fc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
@@ -35,14 +35,14 @@ public class XmlConfigAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<XmlConfig> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<XmlConfig> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<XmlConfig> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<XmlConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        XmlConfig a = ai.getAnnotation();
                        if (! a.addBeanTypes().isEmpty())
                                psb.set(XML_addBeanTypes, 
bool(a.addBeanTypes()));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index 866970b..797dec8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -1063,14 +1063,14 @@ public class RestAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<Rest> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<Rest> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<Rest> ai, PropertyStoreBuilder 
psb) {
+               public void apply(AnnotationInfo<Rest> ai, PropertyStoreBuilder 
psb, VarResolverSession vr) {
                        Rest a = ai.getAnnotation();
                        String s = null;
                        ClassInfo c = ai.getClassOn();
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
index 9e71667..13f59c5 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
@@ -660,14 +660,14 @@ public class RestMethodAnnotation {
                 * Constructor.
                 *
                 * @param c The annotation class.
-                * @param r The resolver for resolving values in annotations.
+                * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(Class<RestMethod> c, VarResolverSession r) {
-                       super(c, r);
+               public Apply(Class<RestMethod> c, VarResolverSession vr) {
+                       super(c, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<RestMethod> ai, 
PropertyStoreBuilder psb) {
+               public void apply(AnnotationInfo<RestMethod> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        RestMethod a = ai.getAnnotation();
                        MethodInfo mi = ai.getMethodOn();
                        String sig = mi == null ? "Unknown" : mi.getSignature();

Reply via email to