Skip to content

Commit c2cab2c

Browse files
committed
Add JsonSchemaGenerator(ObjectWriter)
1 parent 92e8e67 commit c2cab2c

File tree

6 files changed

+53
-21
lines changed

6 files changed

+53
-21
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<groupId>com.fasterxml.jackson.module</groupId>
99
<artifactId>jackson-module-jsonSchema</artifactId>
1010
<name>jackson-module-jsonSchema</name>
11-
<version>2.5.1-SNAPSHOT</version>
11+
<version>2.6.0-SNAPSHOT</version>
1212
<packaging>bundle</packaging>
1313
<description>Add-on module for Jackson (http://jackson.codehaus.org) to support
1414
JSON Schema (http://tools.ietf.org/html/draft-zyp-json-schema-03) version 3 generation.
@@ -34,7 +34,7 @@ JSON Schema (http://tools.ietf.org/html/draft-zyp-json-schema-03) version 3 gene
3434
</developers>
3535
<properties>
3636
<version.jackson.annotations>2.5.0</version.jackson.annotations>
37-
<version.jackson.core>2.5.0</version.jackson.core>
37+
<version.jackson.core>2.6.0-SNAPSHOT</version.jackson.core>
3838

3939
<osgi.export>${project.groupId}.jsonSchema.*</osgi.export>
4040
</properties>

release-notes/VERSION

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Project: jackson-module-jsonSchema
44
=== Releases ===
55
------------------------------------------------------------------------
66

7+
2.6.0 (not yet released)
8+
9+
- Added `JsonSchemaGenerator(ObjectWriter)` to allow use of (re-)configured `ObjectWriter`
10+
instead of `ObjectMapper` which can not be configured.
11+
712
2.5.1 (not yet released)
813

914
...
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.fasterxml.jackson.module.jsonSchema;
22

3-
import com.fasterxml.jackson.databind.JavaType;
4-
import com.fasterxml.jackson.databind.JsonMappingException;
5-
import com.fasterxml.jackson.databind.ObjectMapper;
3+
import com.fasterxml.jackson.databind.*;
64
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
75
import com.fasterxml.jackson.module.jsonSchema.factories.WrapperFactory;
86

@@ -13,8 +11,16 @@
1311
*/
1412
public class JsonSchemaGenerator
1513
{
14+
/**
15+
* @deprecated Since 2.6
16+
*/
1617
protected final ObjectMapper _mapper;
1718

19+
/**
20+
* @since 2.6
21+
*/
22+
protected final ObjectWriter _writer;
23+
1824
private final WrapperFactory _wrapperFactory;
1925

2026
public JsonSchemaGenerator(ObjectMapper mapper) {
@@ -23,20 +29,37 @@ public JsonSchemaGenerator(ObjectMapper mapper) {
2329

2430
public JsonSchemaGenerator(ObjectMapper mapper, WrapperFactory wrapperFactory) {
2531
_mapper = mapper;
26-
_wrapperFactory = wrapperFactory == null ? new WrapperFactory() : wrapperFactory;
32+
_writer = mapper.writer();
33+
_wrapperFactory = (wrapperFactory == null) ? new WrapperFactory() : wrapperFactory;
34+
}
35+
36+
/**
37+
* @since 2.6
38+
*/
39+
public JsonSchemaGenerator(ObjectWriter w) {
40+
this(w, null);
2741
}
2842

43+
/**
44+
* @since 2.6
45+
*/
46+
public JsonSchemaGenerator(ObjectWriter w, WrapperFactory wrapperFactory) {
47+
_mapper = null;
48+
_writer = w;
49+
_wrapperFactory = (wrapperFactory == null) ? new WrapperFactory() : wrapperFactory;
50+
}
51+
2952
public JsonSchema generateSchema(Class<?> type) throws JsonMappingException
3053
{
31-
SchemaFactoryWrapper visitor = _wrapperFactory.getWrapper(_mapper == null ? null : _mapper.getSerializerProvider());
32-
_mapper.acceptJsonFormatVisitor(type, visitor);
54+
SchemaFactoryWrapper visitor = _wrapperFactory.getWrapper(null);
55+
_writer.acceptJsonFormatVisitor(type, visitor);
3356
return visitor.finalSchema();
3457
}
3558

3659
public JsonSchema generateSchema(JavaType type) throws JsonMappingException
3760
{
38-
SchemaFactoryWrapper visitor = _wrapperFactory.getWrapper(_mapper == null ? null : _mapper.getSerializerProvider());
39-
_mapper.acceptJsonFormatVisitor(type, visitor);
61+
SchemaFactoryWrapper visitor = _wrapperFactory.getWrapper(null);
62+
_writer.acceptJsonFormatVisitor(type, visitor);
4063
return visitor.finalSchema();
4164
}
4265
}

src/main/java/com/fasterxml/jackson/module/jsonSchema/customProperties/TitleSchemaFactoryWrapper.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@ private static class TitleSchemaFactoryWrapperFactory extends WrapperFactory {
1919
@Override
2020
public SchemaFactoryWrapper getWrapper(SerializerProvider p) {
2121
SchemaFactoryWrapper wrapper = new TitleSchemaFactoryWrapper();
22-
wrapper.setProvider(p);
22+
if (p != null) {
23+
wrapper.setProvider(p);
24+
}
2325
return wrapper;
2426
};
2527

2628
@Override
27-
public SchemaFactoryWrapper getWrapper(SerializerProvider p, VisitorContext rvc) {
29+
public SchemaFactoryWrapper getWrapper(SerializerProvider p, VisitorContext rvc) {
2830
SchemaFactoryWrapper wrapper = new TitleSchemaFactoryWrapper();
29-
wrapper.setProvider(p);
31+
if (p != null) {
32+
wrapper.setProvider(p);
33+
}
3034
wrapper.setVisitorContext(rvc);
3135
return wrapper;
3236
}

src/main/java/com/fasterxml/jackson/module/jsonSchema/factories/SchemaFactoryWrapper.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ public class SchemaFactoryWrapper implements JsonFormatVisitorWrapper, Visitor
2222
public SchemaFactoryWrapper() {
2323
this(null, new WrapperFactory());
2424
}
25-
25+
2626
public SchemaFactoryWrapper(SerializerProvider p) {
2727
this(p, new WrapperFactory());
2828
}
2929

3030
protected SchemaFactoryWrapper(WrapperFactory wrapperFactory) {
3131
this(null, wrapperFactory);
3232
}
33-
33+
3434
protected SchemaFactoryWrapper(SerializerProvider p, WrapperFactory wrapperFactory) {
3535
provider = p;
3636
schemaProvider = new JsonSchemaFactory();
@@ -135,7 +135,7 @@ public JsonMapFormatVisitor expectMapFormat(JavaType type)
135135
}
136136

137137
@Override
138-
public Visitor setVisitorContext(VisitorContext rvc) {
138+
public SchemaFactoryWrapper setVisitorContext(VisitorContext rvc) {
139139
visitorContext = rvc;
140140
return this;
141141
}

src/main/java/com/fasterxml/jackson/module/jsonSchema/factories/WrapperFactory.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
* to nested schema factories.
88
* @author jphelan
99
*/
10-
public class WrapperFactory {
11-
12-
public SchemaFactoryWrapper getWrapper(SerializerProvider provider) {
13-
return new SchemaFactoryWrapper(provider);
14-
}
10+
public class WrapperFactory
11+
{
12+
public SchemaFactoryWrapper getWrapper(SerializerProvider provider) {
13+
return new SchemaFactoryWrapper(provider);
14+
}
1515

1616
public SchemaFactoryWrapper getWrapper(SerializerProvider provider, VisitorContext rvc) {
1717
SchemaFactoryWrapper wrapper = new SchemaFactoryWrapper(provider);

0 commit comments

Comments
 (0)