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 5e531c2  Context API refactoring.
5e531c2 is described below

commit 5e531c2a995f33ef03b13a751bd0b83326d47979
Author: JamesBognar <[email protected]>
AuthorDate: Tue Sep 28 15:47:36 2021 -0400

    Context API refactoring.
---
 .../apache/juneau/html/HtmlSchemaSerializer.java   |   4 +-
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |  73 +++---
 .../org/apache/juneau/http/annotation/Body.java    |   6 +-
 .../apache/juneau/http/annotation/FormData.java    |   7 +-
 .../org/apache/juneau/http/annotation/Header.java  |   7 +-
 .../org/apache/juneau/http/annotation/Path.java    |   7 +-
 .../org/apache/juneau/http/annotation/Query.java   |   7 +-
 .../apache/juneau/http/annotation/Response.java    |   6 +-
 .../apache/juneau/json/JsonSchemaSerializer.java   |  13 +-
 .../juneau/json/JsonSchemaSerializerBuilder.java   |  68 ++---
 .../juneau/jsonschema/JsonSchemaGenerator.java     | 273 +++------------------
 .../jsonschema/JsonSchemaGeneratorBuilder.java     | 146 ++++++-----
 .../jsonschema/JsonSchemaGeneratorSession.java     |  16 +-
 .../org/apache/juneau/jsonschema/TypeCategory.java |  19 +-
 .../jsonschema/annotation/JsonSchemaConfig.java    |  16 +-
 .../annotation/JsonSchemaConfigAnnotation.java     |  16 +-
 .../juneau/jsonschema/JsonSchemaGeneratorTest.java | 184 +++++++-------
 17 files changed, 332 insertions(+), 536 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
index dd3006b..4a1a1d7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
@@ -103,7 +103,7 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
-       private final JsonSchemaGenerator generator;
+       final JsonSchemaGenerator generator;
 
        /**
         * Constructor.
@@ -113,7 +113,7 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
        protected HtmlSchemaSerializer(HtmlSchemaSerializerBuilder builder) {
                super(builder.detectRecursions().ignoreRecursions());
 
-               generator = 
JsonSchemaGenerator.create().apply(getContextProperties()).build();
+               generator = builder.generatorBuilder.build();
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
index e1ab4b3..ad190f2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.html;
 
-import static org.apache.juneau.jsonschema.JsonSchemaGenerator.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
@@ -35,6 +33,8 @@ import org.apache.juneau.xml.*;
 @FluentSetters
 public class HtmlSchemaSerializerBuilder extends HtmlSerializerBuilder {
 
+       JsonSchemaGeneratorBuilder generatorBuilder;
+
        /**
         * Constructor, default settings.
         */
@@ -43,6 +43,7 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
                produces("text/html");
                accept("text/html+schema");
                type(HtmlSchemaSerializer.class);
+               generatorBuilder = (JsonSchemaGeneratorBuilder) 
JsonSchemaGenerator.create().beanContext(beanContext());
        }
 
        /**
@@ -52,6 +53,7 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         */
        protected HtmlSchemaSerializerBuilder(HtmlSchemaSerializer copyFrom) {
                super(copyFrom);
+               generatorBuilder = (JsonSchemaGeneratorBuilder) 
copyFrom.generator.copy().beanContext(beanContext());
        }
 
        /**
@@ -61,6 +63,7 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         */
        protected HtmlSchemaSerializerBuilder(HtmlSchemaSerializerBuilder 
copyFrom) {
                super(copyFrom);
+               generatorBuilder = (JsonSchemaGeneratorBuilder) 
copyFrom.generatorBuilder.copy().beanContext(beanContext());
        }
 
        @Override /* ContextBuilder */
@@ -86,17 +89,18 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         * The description is the result of calling {@link 
ClassMeta#getFullName()}.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addDescriptionsTo(TypeCategory...)}
         * </ul>
         *
-        * @param value
-        *      The new value for this property.
+        * @param values
+        *      The values to add to this setting.
         *      <br>The default is an empty string.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public HtmlSchemaSerializerBuilder addDescriptionsTo(String value) {
-               return set(JSONSCHEMA_addDescriptionsTo, value);
+       public HtmlSchemaSerializerBuilder 
addDescriptionsTo(TypeCategory...values) {
+               generatorBuilder.addDescriptionsTo(values);
+               return this;
        }
 
        /**
@@ -113,17 +117,18 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...)}
         * </ul>
         *
-        * @param value
-        *      The new value for this property.
+        * @param values
+        *      The values to add to this setting.
         *      <br>The default is an empty string.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public HtmlSchemaSerializerBuilder addExamplesTo(String value) {
-               return set(JSONSCHEMA_addExamplesTo, value);
+       public HtmlSchemaSerializerBuilder addExamplesTo(TypeCategory...values) 
{
+               generatorBuilder.addExamplesTo(values);
+               return this;
        }
 
        /**
@@ -133,14 +138,15 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         * Identifies whether nested descriptions are allowed in schema 
definitions.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedDescriptions}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedDescriptions()}
         * </ul>
         *
         * @return This object (for method chaining).
         */
        @FluentSetter
        public HtmlSchemaSerializerBuilder allowNestedDescriptions() {
-               return set(JSONSCHEMA_allowNestedDescriptions);
+               generatorBuilder.allowNestedDescriptions();
+               return this;
        }
 
        /**
@@ -150,14 +156,15 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         * Identifies whether nested examples are allowed in schema definitions.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples()}
         * </ul>
         *
         * @return This object (for method chaining).
         */
        @FluentSetter
        public HtmlSchemaSerializerBuilder allowNestedExamples() {
-               return set(JSONSCHEMA_allowNestedExamples);
+               generatorBuilder.allowNestedExamples();
+               return this;
        }
 
        /**
@@ -168,10 +175,10 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         * <p>
         * Used primarily for defining common definition sections for beans in 
Swagger JSON.
         * <p>
-        * This setting is ignored if {@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} is not enabled.
+        * This setting is ignored if {@link 
JsonSchemaGeneratorBuilder#useBeanDefs()} is not enabled.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_beanDefMapper}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#beanDefMapper(Class)}
         * </ul>
         *
         * @param value
@@ -181,31 +188,8 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         */
        @FluentSetter
        public HtmlSchemaSerializerBuilder beanDefMapper(Class<? extends 
BeanDefMapper> value) {
-               return set(JSONSCHEMA_beanDefMapper, value);
-       }
-
-       /**
-        * <i><l>HtmlSchemaSerializer</l> configuration property:&emsp;</i>  
Bean schema definition mapper.
-        *
-        * <p>
-        * Interface to use for converting Bean classes to definition IDs and 
URIs.
-        * <p>
-        * Used primarily for defining common definition sections for beans in 
Swagger JSON.
-        * <p>
-        * This setting is ignored if {@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} is not enabled.
-        *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_beanDefMapper}
-        * </ul>
-        *
-        * @param value
-        *      The new value for this property.
-        *      <br>The default is {@link 
org.apache.juneau.jsonschema.BasicBeanDefMapper}.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public HtmlSchemaSerializerBuilder beanDefMapper(BeanDefMapper value) {
-               return set(JSONSCHEMA_beanDefMapper, value);
+               generatorBuilder.beanDefMapper(value);
+               return this;
        }
 
        /**
@@ -247,7 +231,8 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
         */
        @FluentSetter
        public HtmlSchemaSerializerBuilder useBeanDefs() {
-               return set(JSONSCHEMA_useBeanDefs);
+               generatorBuilder.useBeanDefs();
+               return this;
        }
 
        // <FluentSetters>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
index 0895abb..3ff2ccb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
@@ -315,10 +315,10 @@ public @interface Body {
         * <ul class='seealso'>
         *      <li class='ja'>{@link Example}
         *      <li class='ja'>{@link Marshalled#example() Marshalled(example)}
-        *      <li class='jc'>{@link JsonSchemaSerializer}
+        *      <li class='jc'>{@link JsonSchemaGeneratorBuilder}
         *      <ul>
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo JSONSCHEMA_addExamplesTo}
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples 
JSONSCHEMA_allowNestedExamples}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...) 
addExamplesTo(TypeCategory...)}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples() allowNestedExamples()}
         *      </ul>
         * </ul>
         *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
index 35a47a3..f616557 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
@@ -22,7 +22,6 @@ import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
-import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.oapi.*;
 
@@ -444,10 +443,10 @@ public @interface FormData {
         * <ul class='seealso'>
         *      <li class='ja'>{@link Example}
         *      <li class='ja'>{@link Marshalled#example() Marshalled(example)}
-        *      <li class='jc'>{@link JsonSchemaSerializer}
+        *      <li class='jc'>{@link JsonSchemaGeneratorBuilder}
         *      <ul>
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo JSONSCHEMA_addExamplesTo}
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples 
JSONSCHEMA_allowNestedExamples}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...) 
addExamplesTo(TypeCategory...)}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples() allowNestedExamples()}
         *      </ul>
         * </ul>
         *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
index 72b77d8..8ef57c0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
@@ -22,7 +22,6 @@ import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
-import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.oapi.*;
 
@@ -418,10 +417,10 @@ public @interface Header {
         * <ul class='seealso'>
         *      <li class='ja'>{@link Example}
         *      <li class='ja'>{@link Marshalled#example() Marshalled(example)}
-        *      <li class='jc'>{@link JsonSchemaSerializer}
+        *      <li class='jc'>{@link JsonSchemaGeneratorBuilder}
         *      <ul>
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo JSONSCHEMA_addExamplesTo}
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples 
JSONSCHEMA_allowNestedExamples}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...) 
addExamplesTo(TypeCategory...)}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples() allowNestedExamples()}
         *      </ul>
         * </ul>
         *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
index 7c6494e..2ade106 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
@@ -22,7 +22,6 @@ import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
-import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.oapi.*;
 
@@ -379,10 +378,10 @@ public @interface Path {
         *      <li class='ja'>{@link Example}
         *      <li class='ja'>{@link Bean#example() Bean(example)}
         *      <li class='ja'>{@link Marshalled#example() Marshalled(example)}
-        *      <li class='jc'>{@link JsonSchemaSerializer}
+        *      <li class='jc'>{@link JsonSchemaGeneratorBuilder}
         *      <ul>
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo JSONSCHEMA_addExamplesTo}
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples 
JSONSCHEMA_allowNestedExamples}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...) 
addExamplesTo(TypeCategory...)}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples() allowNestedExamples()}
         *      </ul>
         * </ul>
         *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
index 8690e46..47cfabb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
@@ -22,7 +22,6 @@ import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
-import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.oapi.*;
 
@@ -442,10 +441,10 @@ public @interface Query {
         *      <li class='ja'>{@link Example}
         *      <li class='ja'>{@link Bean#example() Bean(example)}
         *      <li class='ja'>{@link Marshalled#example() Marshalled(example)}
-        *      <li class='jc'>{@link JsonSchemaSerializer}
+        *      <li class='jc'>{@link JsonSchemaGeneratorBuilder}
         *      <ul>
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo JSONSCHEMA_addExamplesTo}
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples 
JSONSCHEMA_allowNestedExamples}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...) 
addExamplesTo(TypeCategory...)}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples() allowNestedExamples()}
         *      </ul>
         * </ul>
         *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java
index 7515697..83a2107 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Response.java
@@ -274,10 +274,10 @@ public @interface Response {
         *      <li class='ja'>{@link Example}
         *      <li class='ja'>{@link Bean#example() Bean(example)}
         *      <li class='ja'>{@link Marshalled#example() Marshalled(example)}
-        *      <li class='jc'>{@link JsonSchemaSerializer}
+        *      <li class='jc'>{@link JsonSchemaGeneratorBuilder}
         *      <ul>
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo JSONSCHEMA_addExamplesTo}
-        *              <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples 
JSONSCHEMA_allowNestedExamples}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...) 
addExamplesTo(TypeCategory...)}
+        *              <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples() allowNestedExamples()}
         *      </ul>
         * </ul>
         *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index 363ea7d..3e7c602 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -38,13 +38,7 @@ import org.apache.juneau.serializer.*;
 public class JsonSchemaSerializer extends JsonSerializer implements 
JsonSchemaMetaProvider {
 
        
//-------------------------------------------------------------------------------------------------------------------
-       // Configurable properties
-       
//-------------------------------------------------------------------------------------------------------------------
-
-       static final String PREFIX = "JsonSchemaSerializer";
-
-       
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined instances
+       // Static
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Default serializer, all default settings.*/
@@ -59,9 +53,8 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
        /** Default serializer, single quotes, simple mode, with whitespace. */
        public static final JsonSchemaSerializer DEFAULT_SIMPLE_READABLE = new 
SimpleReadable(create());
 
-
        
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined subclasses
+       // Static subclasses
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Default serializer, with whitespace. */
@@ -103,12 +96,12 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
                }
        }
 
-
        
//-------------------------------------------------------------------------------------------------------------------
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
        final JsonSchemaGenerator generator;
+
        private final Map<ClassMeta<?>,JsonSchemaClassMeta> 
jsonSchemaClassMetas = new ConcurrentHashMap<>();
        private final Map<BeanPropertyMeta,JsonSchemaBeanPropertyMeta> 
jsonSchemaBeanPropertyMetas = new ConcurrentHashMap<>();
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
index bfa7272..ddbf22a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.json;
 
-import static org.apache.juneau.jsonschema.JsonSchemaGenerator.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
@@ -89,17 +87,18 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
         * The description is the result of calling {@link 
ClassMeta#getFullName()}.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addDescriptionsTo(TypeCategory...)}
         * </ul>
         *
-        * @param value
-        *      The new value for this property.
+        * @param values
+        *      The values to add to this setting.
         *      <br>The default is an empty string.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public JsonSchemaSerializerBuilder addDescriptionsTo(String value) {
-               return set(JSONSCHEMA_addDescriptionsTo, value);
+       public JsonSchemaSerializerBuilder 
addDescriptionsTo(TypeCategory...values) {
+               generatorBuilder.addDescriptionsTo(values);
+               return this;
        }
 
        /**
@@ -116,17 +115,18 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...)}
         * </ul>
         *
-        * @param value
-        *      The new value for this property.
+        * @param values
+        *      The values to add to this setting.
         *      <br>The default is an empty string.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public JsonSchemaSerializerBuilder addExamplesTo(String value) {
-               return set(JSONSCHEMA_addExamplesTo, value);
+       public JsonSchemaSerializerBuilder addExamplesTo(TypeCategory...values) 
{
+               generatorBuilder.addExamplesTo(values);
+               return this;
        }
 
        /**
@@ -136,14 +136,15 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
         * Identifies whether nested descriptions are allowed in schema 
definitions.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedDescriptions}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedDescriptions()}
         * </ul>
         *
         * @return This object (for method chaining).
         */
        @FluentSetter
        public JsonSchemaSerializerBuilder allowNestedDescriptions() {
-               return set(JSONSCHEMA_allowNestedDescriptions);
+               generatorBuilder.allowNestedDescriptions();
+               return this;
        }
 
        /**
@@ -153,14 +154,15 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
         * Identifies whether nested examples are allowed in schema definitions.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples()}
         * </ul>
         *
         * @return This object (for method chaining).
         */
        @FluentSetter
        public JsonSchemaSerializerBuilder allowNestedExamples() {
-               return set(JSONSCHEMA_allowNestedExamples);
+               generatorBuilder.allowNestedExamples();
+               return this;
        }
 
        /**
@@ -171,10 +173,10 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
         * <p>
         * Used primarily for defining common definition sections for beans in 
Swagger JSON.
         * <p>
-        * This setting is ignored if {@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} is not enabled.
+        * This setting is ignored if {@link 
JsonSchemaGeneratorBuilder#useBeanDefs()} is not enabled.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_beanDefMapper}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#beanDefMapper(Class)}
         * </ul>
         *
         * @param value
@@ -184,31 +186,8 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
         */
        @FluentSetter
        public JsonSchemaSerializerBuilder beanDefMapper(Class<? extends 
BeanDefMapper> value) {
-               return set(JSONSCHEMA_beanDefMapper, value);
-       }
-
-       /**
-        * <i><l>JsonSchemaSerializer</l> configuration property:&emsp;</i>  
Bean schema definition mapper.
-        *
-        * <p>
-        * Interface to use for converting Bean classes to definition IDs and 
URIs.
-        * <p>
-        * Used primarily for defining common definition sections for beans in 
Swagger JSON.
-        * <p>
-        * This setting is ignored if {@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} is not enabled.
-        *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_beanDefMapper}
-        * </ul>
-        *
-        * @param value
-        *      The new value for this property.
-        *      <br>The default is {@link 
org.apache.juneau.jsonschema.BasicBeanDefMapper}.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public JsonSchemaSerializerBuilder beanDefMapper(BeanDefMapper value) {
-               return set(JSONSCHEMA_beanDefMapper, value);
+               generatorBuilder.beanDefMapper(value);
+               return this;
        }
 
        /**
@@ -250,7 +229,8 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
         */
        @FluentSetter
        public JsonSchemaSerializerBuilder useBeanDefs() {
-               return set(JSONSCHEMA_useBeanDefs);
+               generatorBuilder.useBeanDefs();
+               return this;
        }
 
        // <FluentSetters>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
index 3754db9..f1a20a9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
@@ -12,7 +12,9 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.jsonschema;
 
+import static org.apache.juneau.internal.ExceptionUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
+import static java.util.Collections.*;
 
 import java.util.*;
 import java.util.concurrent.*;
@@ -31,227 +33,25 @@ import org.apache.juneau.json.*;
 public class JsonSchemaGenerator extends BeanTraverseContext implements 
JsonSchemaMetaProvider {
 
        
//-------------------------------------------------------------------------------------------------------------------
-       // Configurable properties
-       
//-------------------------------------------------------------------------------------------------------------------
-
-       static final String PREFIX = "JsonSchemaGenerator";
-
-       /**
-        * Configuration property:  Add descriptions to types.
-        *
-        * <p>
-        * Identifies which categories of types that descriptions should be 
automatically added to generated schemas.
-        * The description is the result of calling {@link 
ClassMeta#getFullName()}.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo 
JSONSCHEMA_addDescriptionsTo}
-        *      <li><b>Name:</b>  
<js>"JsonSchemaGenerator.addDescriptionsTo.s"</js>
-        *      <li><b>Data type:</b>  <c>String</c>
-        *      <li><b>System property:</b>  
<c>JsonSchemaGenerator.addDescriptionsTo</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSCHEMAGENERATOR_ADDDESCRIPTIONSTO</c>
-        *      <li><b>Default:</b>  Empty string.
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.JsonSchemaConfig#addDescriptionsTo()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#addDescriptionsTo(String)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSONSCHEMA_addDescriptionsTo = PREFIX + 
".addDescriptionsTo.s";
-
-       /**
-        * Configuration property:  Add examples.
-        *
-        * <p>
-        * Identifies which categories of types that examples should be 
automatically added to generated schemas.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_addExamplesTo 
JSONSCHEMA_addExamplesTo}
-        *      <li><b>Name:</b>  <js>"JsonSchemaGenerator.addExamplesTo.s"</js>
-        *      <li><b>Data type:</b>  <c>String</c>
-        *      <li><b>System property:</b>  
<c>JsonSchemaGenerator.addExamplesTo</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSCHEMAGENERATOR_ADDEXAMPLESTO</c>
-        *      <li><b>Default:</b>  Empty string.
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.JsonSchemaConfig#addExamplesTo()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#addExamplesTo(String)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSONSCHEMA_addExamplesTo = PREFIX + 
".addExamplesTo.s";
-
-       /**
-        * Configuration property:  Allow nested descriptions.
-        *
-        * <p>
-        * Identifies whether nested descriptions are allowed in schema 
definitions.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_allowNestedDescriptions
 JSONSCHEMA_allowNestedDescriptions}
-        *      <li><b>Name:</b>  
<js>"JsonSchemaGenerator.allowNestedDescriptions.b"</js>
-        *      <li><b>Data type:</b>  <jk>boolean</jk>
-        *      <li><b>System property:</b>  
<c>JsonSchemaGenerator.allowNestedDescriptions</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSCHEMAGENERATOR_ALLOWNESTEDDESCRIPTIONS</c>
-        *      <li><b>Default:</b>  <jk>false</jk>
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.JsonSchemaConfig#allowNestedDescriptions()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#allowNestedDescriptions()}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSONSCHEMA_allowNestedDescriptions = PREFIX 
+ ".allowNestedDescriptions.b";
-
-       /**
-        * Configuration property:  Allow nested examples.
-        *
-        * <p>
-        * Identifies whether nested examples are allowed in schema definitions.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples 
JSONSCHEMA_allowNestedExamples}
-        *      <li><b>Name:</b>  
<js>"JsonSchemaGenerator.allowNestedExamples.b"</js>
-        *      <li><b>Data type:</b>  <jk>boolean</jk>
-        *      <li><b>System property:</b>  
<c>JsonSchemaGenerator.allowNestedExamples</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSCHEMAGENERATOR_ALLOWNESTEDEXAMPLES</c>
-        *      <li><b>Default:</b>  <jk>false</jk>
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.JsonSchemaConfig#allowNestedExamples()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#allowNestedExamples()}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSONSCHEMA_allowNestedExamples = PREFIX + 
".allowNestedExamples.b";
-
-       /**
-        * Configuration property:  Bean schema definition mapper.
-        *
-        * <p>
-        * Interface to use for converting Bean classes to definition IDs and 
URIs.
-        * Used primarily for defining common definition sections for beans in 
Swagger JSON.
-        * This setting is ignored if {@link #JSONSCHEMA_useBeanDefs} is not 
enabled.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_beanDefMapper 
JSONSCHEMA_beanDefMapper}
-        *      <li><b>Name:</b>  <js>"JsonSchemaGenerator.beanDefMapper.o"</js>
-        *      <li><b>Data type:</b>  {@link 
org.apache.juneau.jsonschema.BeanDefMapper}
-        *      <li><b>Default:</b>  {@link 
org.apache.juneau.jsonschema.BasicBeanDefMapper}
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.JsonSchemaConfig#beanDefMapper()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#beanDefMapper(Class)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#beanDefMapper(BeanDefMapper)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSONSCHEMA_beanDefMapper = PREFIX + 
".beanDefMapper.o";
-
-       /**
-        * Configuration property:  Ignore types from schema definitions.
-        *
-        * <p>
-        * Defines class name patterns that should be ignored when generating 
schema definitions in the generated
-        * Swagger documentation.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_ignoreTypes 
JSONSCHEMA_ignoreTypes}
-        *      <li><b>Name:</b>  <js>"JsonSchemaGenerator.ignoreTypes.s"</js>
-        *      <li><b>Data type:</b>  <c>String</c> (comma-delimited)
-        *      <li><b>System property:</b>  
<c>JsonSchemaGenerator.ignoreTypes</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSCHEMAGENERATOR_IGNORETYPES</c>
-        *      <li><b>Default:</b>  <jk>null</jk>.
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.JsonSchemaConfig#ignoreTypes()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#ignoreTypes(String)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSONSCHEMA_ignoreTypes = PREFIX + 
".ignoreTypes.s";
-
-       /**
-        * Configuration property:  Use bean definitions.
-        *
-        * <p>
-        * When enabled, schemas on beans will be serialized as the following:
-        * <p class='bcode w800'>
-        *      {
-        *              type: <js>'object'</js>,
-        *              <js>'$ref'</js>: <js>'#/definitions/TypeId'</js>
-        *      }
-        * </p>
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_useBeanDefs 
JSONSCHEMA_useBeanDefs}
-        *      <li><b>Name:</b>  <js>"JsonSchemaGenerator.useBeanDefs.b"</js>
-        *      <li><b>Data type:</b>  <jk>boolean</jk>
-        *      <li><b>System property:</b>  
<c>JsonSchemaGenerator.useBeanDefs</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSCHEMAGENERATOR_USEBEANDEFS</c>
-        *      <li><b>Default:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.JsonSchemaConfig#useBeanDefs()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#useBeanDefs()}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSONSCHEMA_useBeanDefs = PREFIX + 
".useBeanDefs.b";
-
-
-       
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined instances
+       // Static
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Default serializer, all default settings.*/
        public static final JsonSchemaGenerator DEFAULT = new 
JsonSchemaGenerator(create());
 
-
        
//-------------------------------------------------------------------------------------------------------------------
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
-       private final boolean useBeanDefs, allowNestedExamples, 
allowNestedDescriptions;
-       private final BeanDefMapper beanDefMapper;
-       private final Set<TypeCategory> addExamplesTo, addDescriptionsTo;
+       final boolean useBeanDefs, allowNestedExamples, allowNestedDescriptions;
+       final Set<TypeCategory> addExamplesTo, addDescriptionsTo;
+       final Class<? extends BeanDefMapper> beanDefMapper;
+       final Set<String> ignoreTypes;
+
+       private final BeanDefMapper beanDefMapperBean;
        final JsonSerializer jsonSerializer;
        final JsonParser jsonParser;
-       private final Set<Pattern> ignoreTypes;
+       private final Set<Pattern> ignoreTypePatterns;
        private final Map<ClassMeta<?>,JsonSchemaClassMeta> 
jsonSchemaClassMetas = new ConcurrentHashMap<>();
        private final Map<BeanPropertyMeta,JsonSchemaBeanPropertyMeta> 
jsonSchemaBeanPropertyMetas = new ConcurrentHashMap<>();
 
@@ -263,18 +63,25 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
        protected JsonSchemaGenerator(JsonSchemaGeneratorBuilder builder) {
                super(builder.detectRecursions().ignoreRecursions());
 
-               ContextProperties cp = getContextProperties();
-               useBeanDefs = 
cp.getBoolean(JSONSCHEMA_useBeanDefs).orElse(false);
-               allowNestedExamples = 
cp.getBoolean(JSONSCHEMA_allowNestedExamples).orElse(false);
-               allowNestedDescriptions = 
cp.getBoolean(JSONSCHEMA_allowNestedDescriptions).orElse(false);
-               beanDefMapper = cp.getInstance(JSONSCHEMA_beanDefMapper, 
BeanDefMapper.class).orElseGet(BasicBeanDefMapper::new);
-               addExamplesTo = 
TypeCategory.parse(cp.getString(JSONSCHEMA_addExamplesTo).orElse(null));
-               addDescriptionsTo = 
TypeCategory.parse(cp.getString(JSONSCHEMA_addDescriptionsTo).orElse(null));
-
-               Set<Pattern> ignoreTypes = new LinkedHashSet<>();
-               for (String s : split(cp.get(JSONSCHEMA_ignoreTypes, 
String.class).orElse("")))
-                       ignoreTypes.add(Pattern.compile(s.replace(".", 
"\\.").replace("*", ".*")));
-               this.ignoreTypes = ignoreTypes;
+               useBeanDefs = builder.useBeanDefs;
+               allowNestedExamples = builder.allowNestedExamples;
+               allowNestedDescriptions = builder.allowNestedDescriptions;
+               beanDefMapper = builder.beanDefMapper;
+               addExamplesTo = builder.addExamplesTo == null ? emptySet() : 
new TreeSet<>(builder.addExamplesTo);
+               addDescriptionsTo = builder.addDescriptionsTo == null ? 
emptySet() : new TreeSet<>(builder.addDescriptionsTo);
+               ignoreTypes = builder.ignoreTypes == null ? emptySet() : new 
TreeSet<>(builder.ignoreTypes);
+
+               Set<Pattern> ignoreTypePatterns = new LinkedHashSet<>();
+               for (String s : ignoreTypes)
+                       for (String s2 : split(s))
+                               
ignoreTypePatterns.add(Pattern.compile(s2.replace(".", "\\.").replace("*", 
".*")));
+               this.ignoreTypePatterns = ignoreTypePatterns;
+
+               try {
+                       beanDefMapperBean = beanDefMapper.newInstance();
+               } catch (Exception e) {
+                       throw runtimeException(e);
+               }
 
                jsonSerializer = builder.jsonSerializerBuilder.build();
                jsonParser = 
builder.jsonParserBuilder.apply(getBeanContext().getContextProperties()).build();
@@ -322,7 +129,7 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
        /**
         * Add descriptions to types.
         *
-        * @see #JSONSCHEMA_addDescriptionsTo
+        * @see JsonSchemaGeneratorBuilder#addDescriptionsTo(TypeCategory...)
         * @return
         *      Set of categories of types that descriptions should be 
automatically added to generated schemas.
         */
@@ -333,7 +140,7 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
        /**
         * Add examples.
         *
-        * @see #JSONSCHEMA_addExamplesTo
+        * @see JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...)
         * @return
         *      Set of categories of types that examples should be 
automatically added to generated schemas.
         */
@@ -344,7 +151,7 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
        /**
         * Allow nested descriptions.
         *
-        * @see #JSONSCHEMA_allowNestedDescriptions
+        * @see JsonSchemaGeneratorBuilder#allowNestedDescriptions()
         * @return
         *      <jk>true</jk> if nested descriptions are allowed in schema 
definitions.
         */
@@ -355,7 +162,7 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
        /**
         * Allow nested examples.
         *
-        * @see #JSONSCHEMA_allowNestedExamples
+        * @see JsonSchemaGeneratorBuilder#allowNestedExamples()
         * @return
         *      <jk>true</jk> if nested examples are allowed in schema 
definitions.
         */
@@ -366,29 +173,29 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
        /**
         * Bean schema definition mapper.
         *
-        * @see #JSONSCHEMA_beanDefMapper
+        * @see JsonSchemaGeneratorBuilder#beanDefMapper(Class)
         * @return
         *      Interface to use for converting Bean classes to definition IDs 
and URIs.
         */
        protected final BeanDefMapper getBeanDefMapper() {
-               return beanDefMapper;
+               return beanDefMapperBean;
        }
 
        /**
         * Ignore types from schema definitions.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_ignoreTypes
+        * @see JsonSchemaGeneratorBuilder#ignoreTypes(String...)
         * @return
         *      Custom schema information for particular class types.
         */
        public Set<Pattern> getIgnoreTypes() {
-               return ignoreTypes;
+               return ignoreTypePatterns;
        }
 
        /**
         * Use bean definitions.
         *
-        * @see #JSONSCHEMA_useBeanDefs
+        * @see JsonSchemaGeneratorBuilder#useBeanDefs()
         * @return
         *      <jk>true</jk> if schemas on beans will be serialized with 
<js>'$ref'</js> tags.
         */
@@ -428,14 +235,14 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
         * Returns <jk>true</jk> if the specified type is ignored.
         *
         * <p>
-        * The type is ignored if it's specified in the {@link 
#JSONSCHEMA_ignoreTypes} setting.
+        * The type is ignored if it's specified in the {@link 
JsonSchemaGeneratorBuilder#ignoreTypes(String...)} setting.
         * <br>Ignored types return <jk>null</jk> on the call to {@link 
JsonSchemaGeneratorSession#getSchema(ClassMeta)}.
         *
         * @param cm The type to check.
         * @return <jk>true</jk> if the specified type is ignored.
         */
        public boolean isIgnoredType(ClassMeta<?> cm) {
-               for (Pattern p : ignoreTypes)
+               for (Pattern p : ignoreTypePatterns)
                        if (p.matcher(cm.getSimpleName()).matches() || 
p.matcher(cm.getName()).matches())
                                return true;
                return false;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
index 821f08f..58a4742 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.jsonschema;
 
-import static org.apache.juneau.jsonschema.JsonSchemaGenerator.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.util.*;
@@ -36,6 +34,11 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
        final JsonSerializerBuilder jsonSerializerBuilder;
        final JsonParserBuilder jsonParserBuilder;
 
+       Set<TypeCategory> addDescriptionsTo, addExamplesTo;
+       boolean allowNestedDescriptions, allowNestedExamples, useBeanDefs;
+       Class<? extends BeanDefMapper> beanDefMapper;
+       Set<String> ignoreTypes;
+
        /**
         * Constructor, default settings.
         */
@@ -46,6 +49,13 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
                jsonParserBuilder = (JsonParserBuilder) 
JsonParser.create().beanContext(bc);
                type(JsonSchemaGenerator.class);
                registerBuilders(jsonSerializerBuilder, jsonParserBuilder);
+               addDescriptionsTo = null;
+               addExamplesTo = null;
+               allowNestedDescriptions = 
env("JsonSchemaGenerator.allowNestedDescriptions", false);
+               allowNestedExamples = 
env("JsonSchemaGenerator.allowNestedExamples", false);
+               useBeanDefs = env("JsonSchemaGenerator.useBeanDefs", false);
+               beanDefMapper = BasicBeanDefMapper.class;
+               ignoreTypes = null;
        }
 
        /**
@@ -59,6 +69,13 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
                jsonSerializerBuilder = 
copyFrom.jsonSerializer.copy().beanContext(bc);
                jsonParserBuilder = (JsonParserBuilder) 
copyFrom.jsonParser.copy().beanContext(bc);
                registerBuilders(jsonSerializerBuilder, jsonParserBuilder);
+               addDescriptionsTo = copyFrom.addDescriptionsTo.isEmpty() ? null 
: new TreeSet<>(copyFrom.addDescriptionsTo);
+               addExamplesTo = copyFrom.addExamplesTo.isEmpty() ? null : new 
TreeSet<>(copyFrom.addExamplesTo);
+               allowNestedDescriptions = copyFrom.allowNestedDescriptions;
+               allowNestedExamples = copyFrom.allowNestedExamples;
+               useBeanDefs = copyFrom.useBeanDefs;
+               beanDefMapper = copyFrom.beanDefMapper;
+               ignoreTypes = copyFrom.ignoreTypes.isEmpty() ? null : new 
TreeSet<>(copyFrom.ignoreTypes);
        }
 
        /**
@@ -72,6 +89,13 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
                jsonSerializerBuilder = 
copyFrom.jsonSerializerBuilder.copy().beanContext(bc);
                jsonParserBuilder = (JsonParserBuilder) 
copyFrom.jsonParserBuilder.copy().beanContext(bc);
                registerBuilders(jsonSerializerBuilder, jsonParserBuilder);
+               addDescriptionsTo = copyFrom.addDescriptionsTo == null ? null : 
new TreeSet<>(copyFrom.addDescriptionsTo);
+               addExamplesTo = copyFrom.addExamplesTo == null ? null : new 
TreeSet<>(copyFrom.addExamplesTo);
+               allowNestedDescriptions = copyFrom.allowNestedDescriptions;
+               allowNestedExamples = copyFrom.allowNestedExamples;
+               useBeanDefs = copyFrom.useBeanDefs;
+               beanDefMapper = copyFrom.beanDefMapper;
+               ignoreTypes = copyFrom.ignoreTypes == null ? null : new 
TreeSet<>(copyFrom.ignoreTypes);
        }
 
        @Override /* ContextBuilder */
@@ -108,18 +132,17 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
         *      <li class='jf'>{@link TypeCategory#OTHER OTHER}
         * </ul>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo}
-        * </ul>
-        *
-        * @param value
-        *      The new value for this setting.
+        * @param values
+        *      The values to add to this setting.
         *      <br>The default is an empty string.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public JsonSchemaGeneratorBuilder addDescriptionsTo(String value) {
-               return set(JSONSCHEMA_addDescriptionsTo, value);
+       public JsonSchemaGeneratorBuilder 
addDescriptionsTo(TypeCategory...values) {
+               if (addDescriptionsTo == null)
+                       addDescriptionsTo = new TreeSet<>();
+               Collections.addAll(addDescriptionsTo, values);
+               return this;
        }
 
        /**
@@ -150,18 +173,17 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
         *      <li class='jf'>{@link TypeCategory#OTHER OTHER}
         * </ul>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addExamplesTo}
-        * </ul>
-        *
-        * @param value
-        *      The new value for this setting.
+        * @param values
+        *      The values to add to this setting.
         *      <br>The default is an empty string.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public JsonSchemaGeneratorBuilder addExamplesTo(String value) {
-               return set(JSONSCHEMA_addExamplesTo, value);
+       public JsonSchemaGeneratorBuilder addExamplesTo(TypeCategory...values) {
+               if (addExamplesTo == null)
+                       addExamplesTo = new TreeSet<>();
+               Collections.addAll(addExamplesTo, values);
+               return this;
        }
 
        /**
@@ -170,15 +192,23 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
         * <p>
         * Identifies whether nested descriptions are allowed in schema 
definitions.
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedDescriptions}
-        * </ul>
-        *
         * @return This object (for method chaining).
         */
        @FluentSetter
        public JsonSchemaGeneratorBuilder allowNestedDescriptions() {
-               return set(JSONSCHEMA_allowNestedDescriptions);
+               return allowNestedDescriptions(true);
+       }
+
+       /**
+        * Same as {@link #allowNestedDescriptions()} but allows you to 
explicitly specify the value.
+        *
+        * @param value The value for this setting.
+        * @return This object.
+        */
+       @FluentSetter
+       public JsonSchemaGeneratorBuilder allowNestedDescriptions(boolean 
value) {
+               allowNestedDescriptions = value;
+               return this;
        }
 
        /**
@@ -187,52 +217,34 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
         * <p>
         * Identifies whether nested examples are allowed in schema definitions.
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples}
-        * </ul>
-        *
         * @return This object (for method chaining).
         */
        @FluentSetter
        public JsonSchemaGeneratorBuilder allowNestedExamples() {
-               return set(JSONSCHEMA_allowNestedExamples);
+               return allowNestedExamples(true);
        }
 
        /**
-        * Schema definition mapper.
-        *
-        * <p>
-        * Interface to use for converting Bean classes to definition IDs and 
URIs.
-        * <p>
-        * Used primarily for defining common definition sections for beans in 
Swagger JSON.
-        * <p>
-        * This setting is ignored if {@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} is not enabled.
+        * Same as {@link #allowNestedExamples()} but allows you to explicitly 
specify the value.
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_beanDefMapper}
-        * </ul>
-        *
-        * @param value
-        *      The new value for this setting.
-        *      <br>The default is {@link 
org.apache.juneau.jsonschema.BasicBeanDefMapper}.
-        * @return This object (for method chaining).
+        * @param value The value for this setting.
+        * @return This object.
         */
        @FluentSetter
-       public JsonSchemaGeneratorBuilder beanDefMapper(Class<? extends 
BeanDefMapper> value) {
-               return set(JSONSCHEMA_beanDefMapper, value);
+       public JsonSchemaGeneratorBuilder allowNestedExamples(boolean value) {
+               allowNestedExamples = value;
+               return this;
        }
 
        /**
-        * Bean schema definition mapper.
+        * Schema definition mapper.
         *
         * <p>
         * Interface to use for converting Bean classes to definition IDs and 
URIs.
+        * <p>
         * Used primarily for defining common definition sections for beans in 
Swagger JSON.
-        * This setting is ignored if {@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} is not enabled.
-        *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_beanDefMapper}
-        * </ul>
+        * <p>
+        * This setting is ignored if {@link 
JsonSchemaGeneratorBuilder#useBeanDefs()} is not enabled.
         *
         * @param value
         *      The new value for this setting.
@@ -240,8 +252,9 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public JsonSchemaGeneratorBuilder beanDefMapper(BeanDefMapper value) {
-               return set(JSONSCHEMA_beanDefMapper, value);
+       public JsonSchemaGeneratorBuilder beanDefMapper(Class<? extends 
BeanDefMapper> value) {
+               beanDefMapper = value;
+               return this;
        }
 
        /**
@@ -284,13 +297,16 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
         *      <jk>public class</jk> MyResource {...}
         * </p>
         *
-        * @param value
-        *      A comma-delimited list of types to ignore.
+        * @param values
+        *      The values to add.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public JsonSchemaGeneratorBuilder ignoreTypes(String value) {
-               return set(JSONSCHEMA_ignoreTypes, value);
+       public JsonSchemaGeneratorBuilder ignoreTypes(String...values) {
+               if (ignoreTypes == null)
+                       ignoreTypes = new TreeSet<>();
+               Collections.addAll(ignoreTypes, values);
+               return this;
        }
 
        /**
@@ -314,7 +330,19 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
         */
        @FluentSetter
        public JsonSchemaGeneratorBuilder useBeanDefs() {
-               return set(JSONSCHEMA_useBeanDefs);
+               return useBeanDefs(true);
+       }
+
+       /**
+        * Same as {@link #useBeanDefs()} but allows you to explicitly specify 
the value.
+        *
+        * @param value The value for this setting.
+        * @return This object.
+        */
+       @FluentSetter
+       public JsonSchemaGeneratorBuilder useBeanDefs(boolean value) {
+               useBeanDefs = value;
+               return this;
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
index 1999539..afb5af9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
@@ -340,7 +340,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
         * This map is modifiable and affects the map in the session.
         *
         * @return
-        *      The definitions that were gathered during this session, or 
<jk>null</jk> if {@link JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} was not 
enabled.
+        *      The definitions that were gathered during this session, or 
<jk>null</jk> if {@link JsonSchemaGeneratorBuilder#useBeanDefs()} was not 
enabled.
         */
        public Map<String,OMap> getBeanDefs() {
                return defs;
@@ -366,7 +366,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
        /**
         * Configuration property:  Add descriptions to types.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo
+        * @see JsonSchemaGeneratorBuilder#addDescriptionsTo(TypeCategory...)
         * @return
         *      Set of categories of types that descriptions should be 
automatically added to generated schemas.
         */
@@ -377,7 +377,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
        /**
         * Configuration property:  Add examples.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_addExamplesTo
+        * @see JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...)
         * @return
         *      Set of categories of types that examples should be 
automatically added to generated schemas.
         */
@@ -388,7 +388,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
        /**
         * Configuration property:  Allow nested descriptions.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_allowNestedDescriptions
+        * @see JsonSchemaGeneratorBuilder#allowNestedDescriptions()
         * @return
         *      <jk>true</jk> if nested descriptions are allowed in schema 
definitions.
         */
@@ -399,7 +399,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
        /**
         * Configuration property:  Allow nested examples.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples
+        * @see JsonSchemaGeneratorBuilder#allowNestedExamples()
         * @return
         *      <jk>true</jk> if nested examples are allowed in schema 
definitions.
         */
@@ -410,7 +410,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
        /**
         * Configuration property:  Bean schema definition mapper.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_beanDefMapper
+        * @see JsonSchemaGeneratorBuilder#beanDefMapper(Class)
         * @return
         *      Interface to use for converting Bean classes to definition IDs 
and URIs.
         */
@@ -421,7 +421,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
        /**
         * Configuration property:  Ignore types from schema definitions.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_ignoreTypes
+        * @see JsonSchemaGeneratorBuilder#ignoreTypes(String...)
         * @return
         *      Custom schema information for particular class types.
         */
@@ -432,7 +432,7 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
        /**
         * Configuration property:  Use bean definitions.
         *
-        * @see JsonSchemaGenerator#JSONSCHEMA_useBeanDefs
+        * @see JsonSchemaGeneratorBuilder#useBeanDefs()
         * @return
         *      <jk>true</jk> if schemas on beans will be serialized with 
<js>'$ref'</js> tags.
         */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
index a434dd5..21b0c61 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
@@ -20,8 +20,8 @@ import org.apache.juneau.internal.*;
  * Represents possible values for JSONSCHEMA_addExamplesTo and 
JSONSCHEMA_addDescriptionsTo.
  *
  * <ul class='javatree'>
- *     <li class='jf'>{@link JsonSchemaGenerator#JSONSCHEMA_addExamplesTo}
- *     <li class='jf'>{@link JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo}
+ *     <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addExamplesTo(TypeCategory...)}
+ *     <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addDescriptionsTo(TypeCategory...)}
  * </ul>
  */
 public enum TypeCategory {
@@ -70,4 +70,19 @@ public enum TypeCategory {
                        set.add(valueOf(ss.toUpperCase()));
                return set;
        }
+
+       /**
+        * Parses a comma-delimited list of values into an array of {@link 
TypeCategory} values.
+        *
+        * @param s The comma-delimited string.
+        * @return A comma-delimited list of values into an array of {@link 
TypeCategory} values.
+        */
+       public static TypeCategory[] parseArray(String s) {
+               if (s == null || s.isEmpty())
+                       return new TypeCategory[0];
+               List<TypeCategory> x = new ArrayList<>();
+               for (String ss : StringUtils.split(s))
+                       x.add(valueOf(ss.toUpperCase()));
+               return x.toArray(new TypeCategory[x.size()]);
+       }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
index d146145..c8e5424 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
@@ -77,7 +77,7 @@ public @interface JsonSchemaConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addDescriptionsTo(TypeCategory...)}
         * </ul>
         */
        String addDescriptionsTo() default "";
@@ -114,7 +114,7 @@ public @interface JsonSchemaConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_addDescriptionsTo}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#addDescriptionsTo(TypeCategory...)}
         * </ul>
         */
        String addExamplesTo() default "";
@@ -137,7 +137,7 @@ public @interface JsonSchemaConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedDescriptions}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedDescriptions()}
         * </ul>
         */
        String allowNestedDescriptions() default "";
@@ -160,7 +160,7 @@ public @interface JsonSchemaConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_allowNestedExamples}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#allowNestedExamples()}
         * </ul>
         */
        String allowNestedExamples() default "";
@@ -176,11 +176,11 @@ public @interface JsonSchemaConfig {
         *
         * <ul class='notes'>
         *      <li>
-        *              This setting is ignored if {@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} is not enabled.
+        *              This setting is ignored if {@link 
JsonSchemaGeneratorBuilder#useBeanDefs()} is not enabled.
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_beanDefMapper}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#beanDefMapper(Class)}
         * </ul>
         */
        Class<? extends BeanDefMapper> beanDefMapper() default 
BeanDefMapper.Null.class;
@@ -200,7 +200,7 @@ public @interface JsonSchemaConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_ignoreTypes}
+        *      <li class='jm'>{@link 
JsonSchemaGeneratorBuilder#ignoreTypes(String...)}
         * </ul>
         */
        String ignoreTypes() default "";
@@ -235,7 +235,7 @@ public @interface JsonSchemaConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link 
JsonSchemaGenerator#JSONSCHEMA_useBeanDefs}
+        *      <li class='jm'>{@link JsonSchemaGeneratorBuilder#useBeanDefs()}
         * </ul>
         */
        String useBeanDefs() default "";
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 950bb4b..c82d0e8 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
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.jsonschema.annotation;
 
-import static org.apache.juneau.jsonschema.JsonSchemaGenerator.*;
-
 import org.apache.juneau.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.reflect.*;
@@ -42,13 +40,13 @@ public class JsonSchemaConfigAnnotation {
                public void apply(AnnotationInfo<JsonSchemaConfig> ai, 
JsonSchemaGeneratorBuilder b) {
                        JsonSchemaConfig a = ai.getAnnotation();
 
-                       string(a.addDescriptionsTo()).ifPresent(x -> 
b.set(JSONSCHEMA_addDescriptionsTo, x));
-                       string(a.addExamplesTo()).ifPresent(x -> 
b.set(JSONSCHEMA_addExamplesTo, x));
-                       bool(a.allowNestedDescriptions()).ifPresent(x -> 
b.set(JSONSCHEMA_allowNestedDescriptions, x));
-                       bool(a.allowNestedExamples()).ifPresent(x -> 
b.set(JSONSCHEMA_allowNestedExamples, x));
-                       type(a.beanDefMapper()).ifPresent(x -> 
b.set(JSONSCHEMA_beanDefMapper, x));
-                       string(a.ignoreTypes()).ifPresent(x -> 
b.set(JSONSCHEMA_ignoreTypes, x));
-                       bool(a.useBeanDefs()).ifPresent(x -> 
b.set(JSONSCHEMA_useBeanDefs, x));
+                       
string(a.addDescriptionsTo()).map(TypeCategory::parseArray).ifPresent(x -> 
b.addDescriptionsTo(x));
+                       
string(a.addExamplesTo()).map(TypeCategory::parseArray).ifPresent(x -> 
b.addExamplesTo(x));
+                       bool(a.allowNestedDescriptions()).ifPresent(x -> 
b.allowNestedDescriptions(x));
+                       bool(a.allowNestedExamples()).ifPresent(x -> 
b.allowNestedExamples(x));
+                       type(a.beanDefMapper()).ifPresent(x -> 
b.beanDefMapper(x));
+                       string(a.ignoreTypes()).ifPresent(x -> 
b.ignoreTypes(x));
+                       bool(a.useBeanDefs()).ifPresent(x -> b.useBeanDefs(x));
                        bool(a.detectRecursions()).ifPresent(x -> 
b.detectRecursions(x));
                        bool(a.ignoreRecursions()).ifPresent(x -> 
b.ignoreRecursions(x));
                        integer(a.initialDepth(), "initialDepth").ifPresent(x 
-> b.initialDepth(x));
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
index 57ce6fe..d9f77ce 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
@@ -14,6 +14,7 @@ package org.apache.juneau.jsonschema;
 
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.jsonschema.TypeCategory.*;
 
 import java.util.*;
 
@@ -259,13 +260,6 @@ public class JsonSchemaGeneratorTest {
                
assertObject(s.getBeanDefs()).asJson().is("{'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean':{type:'object',properties:{f1:{type:'string'}}}}");
        }
 
-       @Test
-       public void customBeanDefMapperInstance() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().useBeanDefs().beanDefMapper(new 
CustomBeanDefMapper()).build().createSession();
-               
assertObject(s.getSchema(SimpleBean.class)).asJson().is("{'$ref':'#/definitions/org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean'}");
-               
assertObject(s.getBeanDefs()).asJson().is("{'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean':{type:'object',properties:{f1:{type:'string'}}}}");
-       }
-
        public static class CustomBeanDefMapper extends BasicBeanDefMapper {
                @Override
                public String getId(ClassMeta<?> cm) {
@@ -297,13 +291,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_BEAN_noBeanExample() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(SimpleBean.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}}}");
        }
 
        @Test
        public void addExample_BEAN_exampleMethod() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(B1.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}");
        }
 
@@ -311,13 +305,13 @@ public class JsonSchemaGeneratorTest {
        public void addExample_BEAN_exampleMethod_wDefault() throws Exception {
                B1 b = new B1();
                b.f1 = "baz";
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").example(B1.class, 
b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).example(B1.class, 
b).build().createSession();
                
assertObject(s.getSchema(B1.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'baz'}}");
        }
 
        @Test
        public void addExample_BEAN_exampleMethod_array2d() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(B1[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -333,7 +327,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_BEAN_exampleMethod_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B1cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B1cConfig.class).build().createSession();
                
assertObject(s.getSchema(B1c.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}");
        }
 
@@ -341,13 +335,13 @@ public class JsonSchemaGeneratorTest {
        public void addExample_BEAN_exampleMethod_wDefault_usingConfig() throws 
Exception {
                B1c b = new B1c();
                b.f1 = "baz";
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B1cConfig.class).example(B1c.class,
 b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B1cConfig.class).example(B1c.class,
 b).build().createSession();
                
assertObject(s.getSchema(B1c.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'baz'}}");
        }
 
        @Test
        public void addExample_BEAN_exampleMethod_array2d_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B1cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B1cConfig.class).build().createSession();
                
assertObject(s.getSchema(B1c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -369,13 +363,13 @@ public class JsonSchemaGeneratorTest {
        public void addExample_BEAN_exampleMethodOverridden_wDefault() throws 
Exception {
                B2 b = new B2();
                b.f1 = "baz";
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").example(B2.class, 
b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).example(B2.class, 
b).build().createSession();
                
assertObject(s.getSchema(B2.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'baz'}}");
        }
 
        @Test
        public void addExample_BEAN_exampleMethodOverridden_array2d() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(B2[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -393,13 +387,13 @@ public class JsonSchemaGeneratorTest {
        public void 
addExample_BEAN_exampleMethodOverridden_wDefault_usingConfig() throws Exception 
{
                B2c b = new B2c();
                b.f1 = "baz";
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B2cConfig.class).example(B2c.class,
 b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B2cConfig.class).example(B2c.class,
 b).build().createSession();
                
assertObject(s.getSchema(B2c.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'baz'}}");
        }
 
        @Test
        public void 
addExample_BEAN_exampleMethodOverridden_array2d_usingConfig() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B2cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B2cConfig.class).build().createSession();
                
assertObject(s.getSchema(B2c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -419,13 +413,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_BEAN_exampleField() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(B3.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}");
        }
 
        @Test
        public void addExample_BEAN_exampleField_array2d() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(B3[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -443,13 +437,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_BEAN_exampleField_usingConfig() throws Exception 
{
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B3cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B3cConfig.class).build().createSession();
                
assertObject(s.getSchema(B3c.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}");
        }
 
        @Test
        public void addExample_BEAN_exampleField_array2d_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B3cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B3cConfig.class).build().createSession();
                
assertObject(s.getSchema(B3c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -469,13 +463,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_BEAN_exampleBeanAnnotation() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(B4.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}");
        }
 
        @Test
        public void addExample_BEAN_exampleBeanAnnotation_2darray() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).build().createSession();
                
assertObject(s.getSchema(B4[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -484,13 +478,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_BEAN_exampleBeanAnnotation_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B4cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B4cConfig.class).build().createSession();
                
assertObject(s.getSchema(B4c.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}");
        }
 
        @Test
        public void addExample_BEAN_exampleBeanAnnotation_2darray_usingConfig() 
throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").applyAnnotations(B4cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).applyAnnotations(B4cConfig.class).build().createSession();
                
assertObject(s.getSchema(B4c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -503,7 +497,7 @@ public class JsonSchemaGeneratorTest {
        public void addExample_BEAN_exampleBeanProperty() throws Exception {
                SimpleBean b = new SimpleBean();
                b.f1 = "foobar";
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").example(SimpleBean.class,
 b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).example(SimpleBean.class,
 b).build().createSession();
                
assertObject(s.getSchema(SimpleBean.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}");
        }
 
@@ -511,7 +505,7 @@ public class JsonSchemaGeneratorTest {
        public void addExample_BEAN_exampleBeanProperty_2darray() throws 
Exception {
                SimpleBean b = new SimpleBean();
                b.f1 = "foobar";
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("bean").example(SimpleBean.class,
 b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BEAN).example(SimpleBean.class,
 b).build().createSession();
                
assertObject(s.getSchema(SimpleBean[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},example:{f1:'foobar'}}}}");
        }
 
@@ -521,13 +515,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_MAP_noExample() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).build().createSession();
                
assertObject(s.getSchema(BeanMap.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}}}");
        }
 
        @Test
        public void addExample_MAP_exampleMethod() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).build().createSession();
                
assertObject(s.getSchema(C1.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}");
        }
 
@@ -535,7 +529,7 @@ public class JsonSchemaGeneratorTest {
        public void addExample_MAP_exampleMethod_wDefault() throws Exception {
                C1 b = new C1();
                b.put(456, B1.example());
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").example(C1.class, 
b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).example(C1.class, 
b).build().createSession();
                
assertObject(s.getSchema(C1.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'456':{f1:'foobar'}}}");
        }
 
@@ -552,7 +546,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_MAP_exampleMethod_usingConfig() throws Exception 
{
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").applyAnnotations(C1cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).applyAnnotations(C1cConfig.class).build().createSession();
                
assertObject(s.getSchema(C1c.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}");
        }
 
@@ -560,7 +554,7 @@ public class JsonSchemaGeneratorTest {
        public void addExample_MAP_exampleMethod_wDefault_usingConfig() throws 
Exception {
                C1c b = new C1c();
                b.put(456, B1.example());
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").applyAnnotations(C1cConfig.class).example(C1c.class,
 b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).applyAnnotations(C1cConfig.class).example(C1c.class,
 b).build().createSession();
                
assertObject(s.getSchema(C1c.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'456':{f1:'foobar'}}}");
        }
 
@@ -579,13 +573,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_MAP_exampleField() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).build().createSession();
                
assertObject(s.getSchema(C2.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}");
        }
 
        @Test
        public void addExample_MAP_exampleField_array2d() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).build().createSession();
                
assertObject(s.getSchema(C2[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}}}");
        }
 
@@ -604,13 +598,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_MAP_exampleField_usingConfig() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").applyAnnotations(C2cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).applyAnnotations(C2cConfig.class).build().createSession();
                
assertObject(s.getSchema(C2c.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}");
        }
 
        @Test
        public void addExample_MAP_exampleField_array2d_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").applyAnnotations(C2cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).applyAnnotations(C2cConfig.class).build().createSession();
                
assertObject(s.getSchema(C2c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}}}");
        }
 
@@ -631,13 +625,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_MAP_exampleBeanAnnotation() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).build().createSession();
                
assertObject(s.getSchema(C3.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'baz'}}}");
        }
 
        @Test
        public void addExample_MAP_exampleBeanAnnotation_2darray() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).build().createSession();
                
assertObject(s.getSchema(C3[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'baz'}}}}}");
        }
 
@@ -647,13 +641,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_MAP_exampleBeanAnnotation_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").applyAnnotations(C3cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).applyAnnotations(C3cConfig.class).build().createSession();
                
assertObject(s.getSchema(C3c.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'baz'}}}");
        }
 
        @Test
        public void addExample_MAP_exampleBeanAnnotation_2darray_usingConfig() 
throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").applyAnnotations(C3cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).applyAnnotations(C3cConfig.class).build().createSession();
                
assertObject(s.getSchema(C3c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'baz'}}}}}");
        }
 
@@ -665,13 +659,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_MAP_exampleBeanProperty() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").example(BeanMap.class, 
C1.example()).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).example(BeanMap.class, 
C1.example()).build().createSession();
                
assertObject(s.getSchema(BeanMap.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}");
        }
 
        @Test
        public void addExample_MAP_exampleBeanProperty_2darray() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("map").example(BeanMap.class, 
C1.example()).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(MAP).example(BeanMap.class, 
C1.example()).build().createSession();
                
assertObject(s.getSchema(BeanMap[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}}}");
        }
 
@@ -681,13 +675,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_COLLECTION_noExample() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).build().createSession();
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}");
        }
 
        @Test
        public void addExample_COLLECTION_exampleMethod() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).build().createSession();
                
assertObject(s.getSchema(D1.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'foobar'}]}");
        }
 
@@ -697,7 +691,7 @@ public class JsonSchemaGeneratorTest {
                SimpleBean sb = new SimpleBean();
                sb.f1 = "baz";
                b.add(sb);
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").example(D1.class,
 b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).example(D1.class, 
b).build().createSession();
                
assertObject(s.getSchema(D1.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'baz'}]}");
        }
 
@@ -714,7 +708,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_COLLECTION_exampleMethod_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").applyAnnotations(D1c.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).applyAnnotations(D1c.class).build().createSession();
                
assertObject(s.getSchema(D1c.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'foobar'}]}");
        }
 
@@ -724,7 +718,7 @@ public class JsonSchemaGeneratorTest {
                SimpleBean sb = new SimpleBean();
                sb.f1 = "baz";
                b.add(sb);
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").applyAnnotations(D1cConfig.class).example(D1c.class,
 b).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).applyAnnotations(D1cConfig.class).example(D1c.class,
 b).build().createSession();
                
assertObject(s.getSchema(D1c.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'baz'}]}");
        }
 
@@ -743,13 +737,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_COLLECTION_exampleField() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).build().createSession();
                
assertObject(s.getSchema(D2.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'foobar'}]}");
        }
 
        @Test
        public void addExample_ARRAY_exampleField_array2d() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("array").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ARRAY).build().createSession();
                
assertObject(s.getSchema(D2[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}},example:[[[{f1:'foobar'}]]]}");
        }
 
@@ -768,13 +762,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_COLLECTION_exampleField_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").applyAnnotations(D2cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).applyAnnotations(D2cConfig.class).build().createSession();
                
assertObject(s.getSchema(D2c.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'foobar'}]}");
        }
 
        @Test
        public void addExample_ARRAY_exampleField_array2d_usingConfig() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("array").applyAnnotations(D2cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ARRAY).applyAnnotations(D2cConfig.class).build().createSession();
                
assertObject(s.getSchema(D2c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}},example:[[[{f1:'foobar'}]]]}");
        }
 
@@ -795,13 +789,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_COLLECTION_exampleBeanAnnotation() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).build().createSession();
                
assertObject(s.getSchema(D3.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'baz'}]}");
        }
 
        @Test
        public void addExample_ARRAY_exampleBeanAnnotation_2darray() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("array").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ARRAY).build().createSession();
                
assertObject(s.getSchema(D3[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}},example:[[[{f1:'baz'}]]]}");
        }
 
@@ -811,13 +805,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_COLLECTION_exampleBeanAnnotation_usingConfig() 
throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").applyAnnotations(D3cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).applyAnnotations(D3cConfig.class).build().createSession();
                
assertObject(s.getSchema(D3c.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'baz'}]}");
        }
 
        @Test
        public void 
addExample_ARRAY_exampleBeanAnnotation_2darray_usingConfig() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("array").applyAnnotations(D3cConfig.class).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ARRAY).applyAnnotations(D3cConfig.class).build().createSession();
                
assertObject(s.getSchema(D3c[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}},example:[[[{f1:'baz'}]]]}");
        }
 
@@ -829,13 +823,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_COLLECTION_exampleBeanProperty() throws 
Exception {
-               JsonSchemaGeneratorSession s 
=JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("collection").example(BeanList.class,
 D1.example()).build().createSession();
+               JsonSchemaGeneratorSession s 
=JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(COLLECTION).example(BeanList.class,
 D1.example()).build().createSession();
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'foobar'}]}");
        }
 
        @Test
        public void addExample_ARRAY_exampleBeanProperty_2darray() throws 
Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("array").example(BeanList.class,
 D1.example()).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ARRAY).example(BeanList.class, 
D1.example()).build().createSession();
                
assertObject(s.getSchema(BeanList[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}},example:[[[{f1:'foobar'}]]]}");
        }
 
@@ -844,14 +838,14 @@ public class JsonSchemaGeneratorTest {
        
//====================================================================================================
        @Test
        public void addExample_BOOLEAN() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("boolean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BOOLEAN).build().createSession();
                
assertObject(s.getSchema(boolean.class)).asJson().is("{type:'boolean',example:true}");
                
assertObject(s.getSchema(Boolean.class)).asJson().is("{type:'boolean',example:true}");
        }
 
        @Test
        public void addExample_BOOLEAN_wDefault() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("boolean")
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BOOLEAN)
                        .example(boolean.class, false)
                        .example(Boolean.class, false)
                        .build().createSession();
@@ -861,7 +855,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_BOOLEAN_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("boolean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(BOOLEAN).build().createSession();
                
assertObject(s.getSchema(boolean[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'boolean',example:true}}}");
                
assertObject(s.getSchema(Boolean[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'boolean',example:true}}}");
        }
@@ -871,7 +865,7 @@ public class JsonSchemaGeneratorTest {
        
//====================================================================================================
        @Test
        public void addExample_NUMBER() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("number").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(NUMBER).build().createSession();
                
assertObject(s.getSchema(short.class)).asJson().is("{type:'integer',format:'int16',example:1}");
                
assertObject(s.getSchema(Short.class)).asJson().is("{type:'integer',format:'int16',example:1}");
                
assertObject(s.getSchema(int.class)).asJson().is("{type:'integer',format:'int32',example:1}");
@@ -886,7 +880,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_NUMBER_wDefault() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("number")
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(NUMBER)
                        .example(short.class, (short)2)
                        .example(Short.class, (short)3)
                        .example(int.class, 4)
@@ -912,7 +906,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_NUMBER_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("number").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(NUMBER).build().createSession();
                
assertObject(s.getSchema(short[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'integer',format:'int16',example:1}}}");
                
assertObject(s.getSchema(Short[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'integer',format:'int16',example:1}}}");
                
assertObject(s.getSchema(int[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'integer',format:'int32',example:1}}}");
@@ -931,7 +925,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_STRING() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("string").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(STRING).build().createSession();
                
assertObject(s.getSchema(String.class)).asJson().is("{type:'string',example:'foo'}");
                
assertObject(s.getSchema(StringBuilder.class)).asJson().is("{type:'string',example:'foo'}");
                
assertObject(s.getSchema(Character.class)).asJson().is("{type:'string',example:'a'}");
@@ -940,7 +934,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_STRING_wDefault() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("string")
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(STRING)
                        .example(StringBuilder.class, new StringBuilder("foo"))
                        .example(Character.class, 'b')
                        .example(char.class, 'c')
@@ -952,7 +946,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_STRING_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("string").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(STRING).build().createSession();
                
assertObject(s.getSchema(String[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string',example:'foo'}}}");
                
assertObject(s.getSchema(StringBuilder[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string',example:'foo'}}}");
                
assertObject(s.getSchema(Character[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string',example:'a'}}}");
@@ -961,7 +955,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_STRING_2darray_wDefault() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("string")
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(STRING)
                        .example(StringBuilder.class, new StringBuilder("foo"))
                        .example(Character.class, 'b')
                        .example(char.class, 'c')
@@ -977,37 +971,37 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addExample_ENUM() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("enum").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ENUM).build().createSession();
                
assertObject(s.getSchema(TestEnumToString.class)).asJson().is("{type:'string','enum':['one','two','three'],example:'one'}");
        }
 
        @Test
        public void addExample_ENUM_wDefault() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("enum").example(TestEnumToString.class,
 TestEnumToString.TWO).build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ENUM).example(TestEnumToString.class,
 TestEnumToString.TWO).build().createSession();
                
assertObject(s.getSchema(TestEnumToString.class)).asJson().is("{type:'string','enum':['one','two','three'],example:'two'}");
        }
 
        @Test
        public void addExample_ENUM_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("enum").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ENUM).build().createSession();
                
assertObject(s.getSchema(TestEnumToString[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string','enum':['one','two','three'],example:'one'}}}");
        }
 
        @Test
        public void addExample_ENUM_useEnumNames() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().useEnumNames().addExamplesTo("enum").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().useEnumNames().addExamplesTo(ENUM).build().createSession();
                
assertObject(s.getSchema(TestEnumToString.class)).asJson().is("{type:'string','enum':['ONE','TWO','THREE'],example:'ONE'}");
        }
 
        @Test
        public void addExample_ENUM_wDefault_useEnumNames() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().useEnumNames().addExamplesTo("enum").example(TestEnumToString.class,
 "'TWO'").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().useEnumNames().addExamplesTo(ENUM).example(TestEnumToString.class,
 "'TWO'").build().createSession();
                
assertObject(s.getSchema(TestEnumToString.class)).asJson().is("{type:'string','enum':['ONE','TWO','THREE'],example:'TWO'}");
        }
 
        @Test
        public void addExample_ENUM_2darray_useEnumNames() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().useEnumNames().addExamplesTo("enum").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().useEnumNames().addExamplesTo(ENUM).build().createSession();
                
assertObject(s.getSchema(TestEnumToString[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string','enum':['ONE','TWO','THREE'],example:'ONE'}}}");
        }
 
@@ -1016,7 +1010,7 @@ public class JsonSchemaGeneratorTest {
        
//====================================================================================================
        @Test
        public void addExample_ANY() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo("any").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addExamplesTo(ANY).build().createSession();
                
assertObject(s.getSchema(SimpleBean.class)).asJson().is("{type:'object',properties:{f1:{type:'string',example:'foo'}}}");
                
assertObject(s.getSchema(C1.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},example:{'123':{f1:'foobar'}}}");
                
assertObject(s.getSchema(D1.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},example:[{f1:'foobar'}]}");
@@ -1045,13 +1039,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addDescription_BEAN() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(BEAN).build().createSession();
                
assertObject(s.getSchema(SimpleBean.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean'}");
        }
 
        @Test
        public void addDescription_BEAN_array2d() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("bean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(BEAN).build().createSession();
                
assertObject(s.getSchema(SimpleBean[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean'}}}");
        }
 
@@ -1061,13 +1055,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addDescription_MAP() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(MAP).build().createSession();
                
assertObject(s.getSchema(BeanMap.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanMap<java.lang.Integer,org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}");
        }
 
        @Test
        public void addDescription_MAP_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("map").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(MAP).build().createSession();
                
assertObject(s.getSchema(BeanMap[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanMap<java.lang.Integer,org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}}}");
        }
 
@@ -1077,19 +1071,19 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addDescription_COLLECTION() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("collection").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(COLLECTION).build().createSession();
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanList<org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}");
        }
 
        @Test
        public void addDescription_COLLECTION_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("collection").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(COLLECTION).build().createSession();
                
assertObject(s.getSchema(BeanList[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanList<org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}}}");
        }
 
        @Test
        public void addDescription_ARRAY() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("array").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(ARRAY).build().createSession();
                
assertObject(s.getSchema(BeanList[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanList<org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>[][]'}");
        }
 
@@ -1098,14 +1092,14 @@ public class JsonSchemaGeneratorTest {
        
//====================================================================================================
        @Test
        public void addDescription_BOOLEAN() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("boolean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(BOOLEAN).build().createSession();
                
assertObject(s.getSchema(boolean.class)).asJson().is("{type:'boolean',description:'boolean'}");
                
assertObject(s.getSchema(Boolean.class)).asJson().is("{type:'boolean',description:'java.lang.Boolean'}");
        }
 
        @Test
        public void addDescription_BOOLEAN_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("boolean").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(BOOLEAN).build().createSession();
                
assertObject(s.getSchema(boolean[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'boolean',description:'boolean'}}}");
                
assertObject(s.getSchema(Boolean[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'boolean',description:'java.lang.Boolean'}}}");
        }
@@ -1115,7 +1109,7 @@ public class JsonSchemaGeneratorTest {
        
//====================================================================================================
        @Test
        public void addDescription_NUMBER() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("number").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(NUMBER).build().createSession();
                
assertObject(s.getSchema(short.class)).asJson().is("{type:'integer',format:'int16',description:'short'}");
                
assertObject(s.getSchema(Short.class)).asJson().is("{type:'integer',format:'int16',description:'java.lang.Short'}");
                
assertObject(s.getSchema(int.class)).asJson().is("{type:'integer',format:'int32',description:'int'}");
@@ -1130,7 +1124,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addDescription_NUMBER_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("number").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(NUMBER).build().createSession();
                
assertObject(s.getSchema(short[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'integer',format:'int16',description:'short'}}}");
                
assertObject(s.getSchema(Short[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'integer',format:'int16',description:'java.lang.Short'}}}");
                
assertObject(s.getSchema(int[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'integer',format:'int32',description:'int'}}}");
@@ -1149,7 +1143,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addDescription_STRING() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("string").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(STRING).build().createSession();
                
assertObject(s.getSchema(String.class)).asJson().is("{type:'string',description:'java.lang.String'}");
                
assertObject(s.getSchema(StringBuilder.class)).asJson().is("{type:'string',description:'java.lang.StringBuilder'}");
                
assertObject(s.getSchema(Character.class)).asJson().is("{type:'string',description:'java.lang.Character'}");
@@ -1158,7 +1152,7 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addDescription_STRING_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("string").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(STRING).build().createSession();
                
assertObject(s.getSchema(String[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string',description:'java.lang.String'}}}");
                
assertObject(s.getSchema(StringBuilder[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string',description:'java.lang.StringBuilder'}}}");
                
assertObject(s.getSchema(Character[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string',description:'java.lang.Character'}}}");
@@ -1171,13 +1165,13 @@ public class JsonSchemaGeneratorTest {
 
        @Test
        public void addDescription_ENUM() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("enum").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(ENUM).build().createSession();
                
assertObject(s.getSchema(TestEnumToString.class)).asJson().is("{type:'string','enum':['one','two','three'],description:'org.apache.juneau.testutils.pojos.TestEnumToString'}");
        }
 
        @Test
        public void addDescription_ENUM_2darray() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("enum").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(ENUM).build().createSession();
                
assertObject(s.getSchema(TestEnumToString[][].class)).asJson().is("{type:'array',items:{type:'array',items:{type:'string','enum':['one','two','three'],description:'org.apache.juneau.testutils.pojos.TestEnumToString'}}}");
        }
 
@@ -1186,7 +1180,7 @@ public class JsonSchemaGeneratorTest {
        
//====================================================================================================
        @Test
        public void addDescription_ANY() throws Exception {
-               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo("any").build().createSession();
+               JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy().addDescriptionsTo(ANY).build().createSession();
                
assertObject(s.getSchema(SimpleBean.class)).asJson().is("{type:'object',properties:{f1:{type:'string'}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean'}");
                
assertObject(s.getSchema(BeanMap.class)).asJson().is("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string'}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanMap<java.lang.Integer,org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}");
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanList<org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}");
@@ -1322,7 +1316,7 @@ public class JsonSchemaGeneratorTest {
                        .allowNestedExamples()
                        .example(BeanList.class, new BeanList())
                        .example(SimpleBean.class, new SimpleBean())
-                       .addExamplesTo("collection,bean")
+                       .addExamplesTo(COLLECTION,BEAN)
                        .build().createSession();
 
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}");
@@ -1333,7 +1327,7 @@ public class JsonSchemaGeneratorTest {
                JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy()
                        .example(BeanList.class, new BeanList())
                        .example(SimpleBean.class, new SimpleBean())
-                       .addExamplesTo("collection,bean")
+                       .addExamplesTo(COLLECTION,BEAN)
                        .build().createSession();
 
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}}}");
@@ -1347,7 +1341,7 @@ public class JsonSchemaGeneratorTest {
        public void allowNestedDescriptions_enabled() throws Exception {
                JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy()
                        .allowNestedDescriptions()
-                       .addDescriptionsTo("collection,bean")
+                       .addDescriptionsTo(COLLECTION,BEAN)
                        .build().createSession();
 
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean'},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanList<org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}");
@@ -1356,7 +1350,7 @@ public class JsonSchemaGeneratorTest {
        @Test
        public void allowNestedDescriptions_disabled() throws Exception {
                JsonSchemaGeneratorSession s = 
JsonSchemaGenerator.DEFAULT.copy()
-                       .addDescriptionsTo("collection,bean")
+                       .addDescriptionsTo(COLLECTION,BEAN)
                        .build().createSession();
 
                
assertObject(s.getSchema(BeanList.class)).asJson().is("{type:'array',items:{type:'object',properties:{f1:{type:'string'}}},description:'org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$BeanList<org.apache.juneau.jsonschema.JsonSchemaGeneratorTest$SimpleBean>'}");

Reply via email to