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: </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: </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>'}");