Skip to content

Commit 05a95db

Browse files
committed
Jackson 3 rc10
1 parent 947ad5e commit 05a95db

25 files changed

+305
-272
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,23 +45,23 @@ public static class Pet {
4545
```
4646
And we instantiate the mapper either for JSON
4747
```java
48-
import com.fasterxml.jackson.databind.ObjectMapper;
48+
import tools.jackson.databind.json.JsonMapper;
4949

5050
// ...
5151

52-
ObjectMapper mapper = new ObjectMapper();
53-
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
54-
mapper.registerModule(new JsonNullableModule());
52+
JsonMapper mapper = JsonMapper.builder().addModule(new JsonNullableModule())
53+
.changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL))
54+
.build();
5555
```
5656
or for XML
5757
```java
58-
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
58+
import tools.jackson.dataformat.xml.XmlMapper;
5959

6060
// ...
6161

62-
XmlMapper xmlMapper = new XmlMapper();
63-
xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
64-
xmlMapper.registerModule(new JsonNullableModule());
62+
XmlMapper mapper = XmlMapper.builder().addModule(new JsonNullableModule())
63+
.changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL))
64+
.build();
6565
```
6666
Then we can serialize
6767
```java

pom.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
22
<modelVersion>4.0.0</modelVersion>
33
<parent>
4-
<groupId>com.fasterxml.jackson</groupId>
4+
<groupId>tools.jackson</groupId>
55
<artifactId>jackson-base</artifactId>
6-
<version>2.20.0</version>
6+
<version>3.0.0-rc10</version>
77
</parent>
88
<groupId>org.openapitools</groupId>
99
<artifactId>jackson-databind-nullable</artifactId>
@@ -74,9 +74,13 @@
7474

7575
<dependencies>
7676
<dependency>
77-
<groupId>com.fasterxml.jackson.core</groupId>
77+
<groupId>tools.jackson.core</groupId>
7878
<artifactId>jackson-databind</artifactId>
7979
</dependency>
80+
<dependency>
81+
<groupId>com.fasterxml.jackson.core</groupId>
82+
<artifactId>jackson-annotations</artifactId>
83+
</dependency>
8084
<dependency>
8185
<groupId>javax.validation</groupId>
8286
<artifactId>validation-api</artifactId>

src/main/java/org/openapitools/jackson/nullable/JsonNullableBeanPropertyWriter.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.openapitools.jackson.nullable;
22

3-
import com.fasterxml.jackson.core.JsonGenerator;
4-
import com.fasterxml.jackson.databind.PropertyName;
5-
import com.fasterxml.jackson.databind.SerializerProvider;
6-
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
7-
import com.fasterxml.jackson.databind.util.NameTransformer;
3+
import tools.jackson.core.JsonGenerator;
4+
import tools.jackson.databind.PropertyName;
5+
import tools.jackson.databind.SerializationContext;
6+
import tools.jackson.databind.ser.BeanPropertyWriter;
7+
import tools.jackson.databind.util.NameTransformer;
88

99
public class JsonNullableBeanPropertyWriter extends BeanPropertyWriter
1010
{
@@ -29,13 +29,13 @@ public BeanPropertyWriter unwrappingWriter(NameTransformer unwrapper) {
2929
}
3030

3131
@Override
32-
public void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider prov) throws Exception
32+
public void serializeAsProperty(Object bean, JsonGenerator jgen, SerializationContext ctxt) throws Exception
3333
{
3434
Object value = get(bean);
3535
if (JsonNullable.undefined().equals(value) || (_nullSerializer == null && value == null)) {
3636
return;
3737
}
38-
super.serializeAsField(bean, jgen, prov);
38+
super.serializeAsProperty(bean, jgen, ctxt);
3939
}
4040

4141
}

src/main/java/org/openapitools/jackson/nullable/JsonNullableDeserializer.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package org.openapitools.jackson.nullable;
22

33

4-
import com.fasterxml.jackson.core.JsonParser;
5-
import com.fasterxml.jackson.core.JsonToken;
6-
import com.fasterxml.jackson.databind.DeserializationConfig;
7-
import com.fasterxml.jackson.databind.DeserializationContext;
8-
import com.fasterxml.jackson.databind.JavaType;
9-
import com.fasterxml.jackson.databind.JsonDeserializer;
10-
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
11-
import com.fasterxml.jackson.databind.deser.std.ReferenceTypeDeserializer;
12-
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
13-
import com.fasterxml.jackson.databind.type.ReferenceType;
14-
15-
import java.io.IOException;
4+
import tools.jackson.core.JacksonException;
5+
import tools.jackson.core.JsonParser;
6+
import tools.jackson.core.JsonToken;
7+
import tools.jackson.databind.DeserializationConfig;
8+
import tools.jackson.databind.DeserializationContext;
9+
import tools.jackson.databind.JavaType;
10+
import tools.jackson.databind.ValueDeserializer;
11+
import tools.jackson.databind.deser.ValueInstantiator;
12+
import tools.jackson.databind.deser.std.ReferenceTypeDeserializer;
13+
import tools.jackson.databind.jsontype.TypeDeserializer;
14+
import tools.jackson.databind.type.ReferenceType;
1615

1716
public class JsonNullableDeserializer extends ReferenceTypeDeserializer<JsonNullable<Object>> {
1817

@@ -26,7 +25,7 @@ public class JsonNullableDeserializer extends ReferenceTypeDeserializer<JsonNull
2625
/**********************************************************
2726
*/
2827
public JsonNullableDeserializer(JavaType fullType, ValueInstantiator inst,
29-
TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
28+
TypeDeserializer typeDeser, ValueDeserializer<?> deser) {
3029
super(fullType, inst, typeDeser, deser);
3130
if (fullType instanceof ReferenceType && ((ReferenceType) fullType).getReferencedType() != null) {
3231
this.isStringDeserializer = ((ReferenceType) fullType).getReferencedType().isTypeOrSubTypeOf(String.class);
@@ -40,10 +39,10 @@ public JsonNullableDeserializer(JavaType fullType, ValueInstantiator inst,
4039
*/
4140

4241
@Override
43-
public JsonNullable<Object> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
44-
JsonToken t = p.getCurrentToken();
42+
public JsonNullable<Object> deserialize(JsonParser p, DeserializationContext ctxt) throws JacksonException {
43+
JsonToken t = p.currentToken();
4544
if (t == JsonToken.VALUE_STRING && !isStringDeserializer) {
46-
String str = p.getText().trim();
45+
String str = p.getString().trim();
4746
if (str.isEmpty()) {
4847
return JsonNullable.undefined();
4948
}
@@ -52,7 +51,7 @@ public JsonNullable<Object> deserialize(JsonParser p, DeserializationContext ctx
5251
}
5352

5453
@Override
55-
public JsonNullableDeserializer withResolved(TypeDeserializer typeDeser, JsonDeserializer<?> valueDeser) {
54+
protected ReferenceTypeDeserializer<JsonNullable<Object>> withResolved(TypeDeserializer typeDeser, ValueDeserializer<?> valueDeser) {
5655
return new JsonNullableDeserializer(_fullType, _valueInstantiator,
5756
typeDeser, valueDeser);
5857
}
Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
package org.openapitools.jackson.nullable;
22

3-
import com.fasterxml.jackson.databind.BeanDescription;
4-
import com.fasterxml.jackson.databind.DeserializationConfig;
5-
import com.fasterxml.jackson.databind.JsonDeserializer;
6-
import com.fasterxml.jackson.databind.deser.Deserializers;
7-
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
8-
import com.fasterxml.jackson.databind.type.ReferenceType;
3+
import tools.jackson.databind.DeserializationConfig;
4+
import tools.jackson.databind.ValueDeserializer;
5+
import tools.jackson.databind.BeanDescription.Supplier;
6+
import tools.jackson.databind.deser.Deserializers;
7+
import tools.jackson.databind.jsontype.TypeDeserializer;
8+
import tools.jackson.databind.type.ReferenceType;
99

1010
public class JsonNullableDeserializers extends Deserializers.Base {
1111

1212
@Override
13-
public JsonDeserializer<?> findReferenceDeserializer(ReferenceType refType,
14-
DeserializationConfig config, BeanDescription beanDesc,
15-
TypeDeserializer contentTypeDeserializer, JsonDeserializer<?> contentDeserializer) {
13+
public ValueDeserializer<?> findReferenceDeserializer(ReferenceType refType,
14+
DeserializationConfig config, Supplier beanDescRef,
15+
TypeDeserializer contentTypeDeserializer, ValueDeserializer<?> contentDeserializer) {
1616
return (refType.hasRawClass(JsonNullable.class)) ? new JsonNullableDeserializer(refType, null, contentTypeDeserializer,contentDeserializer) : null;
1717
}
18+
19+
@Override
20+
public boolean hasDeserializerFor(DeserializationConfig config, Class<?> valueType) {
21+
return JsonNullable.class.equals(valueType);
22+
}
1823
}

src/main/java/org/openapitools/jackson/nullable/JsonNullableModule.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.openapitools.jackson.nullable;
22

3-
import com.fasterxml.jackson.core.Version;
4-
import com.fasterxml.jackson.core.json.PackageVersion;
5-
import com.fasterxml.jackson.databind.Module;
3+
import tools.jackson.core.Version;
4+
import tools.jackson.core.json.PackageVersion;
5+
import tools.jackson.databind.JacksonModule;
66

7-
public class JsonNullableModule extends Module {
7+
public class JsonNullableModule extends JacksonModule {
88

99
private final String NAME = "JsonNullableModule";
1010

@@ -14,7 +14,7 @@ public void setupModule(SetupContext context) {
1414
context.addDeserializers(new JsonNullableDeserializers());
1515
// Modify type info for JsonNullable
1616
context.addTypeModifier(new JsonNullableTypeModifier());
17-
context.addBeanSerializerModifier(new JsonNullableBeanSerializerModifier());
17+
context.addSerializerModifier(new JsonNullableValueSerializerModifier());
1818
}
1919

2020
@Override

src/main/java/org/openapitools/jackson/nullable/JsonNullableSerializer.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package org.openapitools.jackson.nullable;
22

3-
import com.fasterxml.jackson.databind.BeanProperty;
4-
import com.fasterxml.jackson.databind.JsonSerializer;
5-
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
6-
import com.fasterxml.jackson.databind.ser.std.ReferenceTypeSerializer;
7-
import com.fasterxml.jackson.databind.type.ReferenceType;
8-
import com.fasterxml.jackson.databind.util.NameTransformer;
3+
import tools.jackson.databind.BeanProperty;
4+
import tools.jackson.databind.ValueSerializer;
5+
import tools.jackson.databind.jsontype.TypeSerializer;
6+
import tools.jackson.databind.ser.std.ReferenceTypeSerializer;
7+
import tools.jackson.databind.type.ReferenceType;
8+
import tools.jackson.databind.util.NameTransformer;
99

1010
public class JsonNullableSerializer extends ReferenceTypeSerializer<JsonNullable<?>> {
1111

@@ -18,12 +18,12 @@ public class JsonNullableSerializer extends ReferenceTypeSerializer<JsonNullable
1818
*/
1919

2020
protected JsonNullableSerializer(ReferenceType fullType, boolean staticTyping,
21-
TypeSerializer vts, JsonSerializer<Object> ser) {
21+
TypeSerializer vts, ValueSerializer<Object> ser) {
2222
super(fullType, staticTyping, vts, ser);
2323
}
2424

2525
protected JsonNullableSerializer(JsonNullableSerializer base, BeanProperty property,
26-
TypeSerializer vts, JsonSerializer<?> valueSer, NameTransformer unwrapper,
26+
TypeSerializer vts, ValueSerializer<?> valueSer, NameTransformer unwrapper,
2727
Object suppressableValue)
2828
{
2929
// Keep suppressNulls to false to always serialize JsonNullable[null]
@@ -33,7 +33,7 @@ protected JsonNullableSerializer(JsonNullableSerializer base, BeanProperty prope
3333

3434
@Override
3535
protected ReferenceTypeSerializer<JsonNullable<?>> withResolved(BeanProperty prop,
36-
TypeSerializer vts, JsonSerializer<?> valueSer,
36+
TypeSerializer vts, ValueSerializer<?> valueSer,
3737
NameTransformer unwrapper)
3838
{
3939
return new JsonNullableSerializer(this, prop, vts, valueSer, unwrapper,

src/main/java/org/openapitools/jackson/nullable/JsonNullableSerializers.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
package org.openapitools.jackson.nullable;
22

3-
import com.fasterxml.jackson.databind.BeanDescription;
4-
import com.fasterxml.jackson.databind.JsonSerializer;
5-
import com.fasterxml.jackson.databind.MapperFeature;
6-
import com.fasterxml.jackson.databind.SerializationConfig;
7-
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
8-
import com.fasterxml.jackson.databind.ser.Serializers;
9-
import com.fasterxml.jackson.databind.type.ReferenceType;
103

11-
public class JsonNullableSerializers extends Serializers.Base {
4+
import com.fasterxml.jackson.annotation.JsonFormat.Value;
5+
6+
import tools.jackson.databind.MapperFeature;
7+
import tools.jackson.databind.SerializationConfig;
8+
import tools.jackson.databind.ValueSerializer;
9+
import tools.jackson.databind.BeanDescription.Supplier;
10+
import tools.jackson.databind.jsontype.TypeSerializer;
11+
import tools.jackson.databind.ser.Serializers;
12+
import tools.jackson.databind.type.ReferenceType;
1213

14+
public class JsonNullableSerializers extends Serializers.Base {
1315
@Override
14-
public JsonSerializer<?> findReferenceSerializer(SerializationConfig config,
15-
ReferenceType refType, BeanDescription beanDesc,
16-
TypeSerializer contentTypeSerializer, JsonSerializer<Object> contentValueSerializer) {
16+
public ValueSerializer<?> findReferenceSerializer(SerializationConfig config,
17+
ReferenceType refType, Supplier beanDescRef, Value formatOverrides,
18+
TypeSerializer contentTypeSerializer, ValueSerializer<Object> contentValueSerializer) {
1719
if (JsonNullable.class.isAssignableFrom(refType.getRawClass())) {
1820
boolean staticTyping = (contentTypeSerializer == null)
1921
&& config.isEnabled(MapperFeature.USE_STATIC_TYPING);

src/main/java/org/openapitools/jackson/nullable/JsonNullableTypeModifier.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.openapitools.jackson.nullable;
22

3-
import com.fasterxml.jackson.databind.JavaType;
4-
import com.fasterxml.jackson.databind.type.ReferenceType;
5-
import com.fasterxml.jackson.databind.type.TypeBindings;
6-
import com.fasterxml.jackson.databind.type.TypeFactory;
7-
import com.fasterxml.jackson.databind.type.TypeModifier;
3+
import tools.jackson.databind.JavaType;
4+
import tools.jackson.databind.type.ReferenceType;
5+
import tools.jackson.databind.type.TypeBindings;
6+
import tools.jackson.databind.type.TypeFactory;
7+
import tools.jackson.databind.type.TypeModifier;
88

99
import java.lang.reflect.Type;
1010

src/main/java/org/openapitools/jackson/nullable/JsonNullableBeanSerializerModifier.java renamed to src/main/java/org/openapitools/jackson/nullable/JsonNullableValueSerializerModifier.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
package org.openapitools.jackson.nullable;
22

3-
import com.fasterxml.jackson.databind.BeanDescription;
4-
import com.fasterxml.jackson.databind.JavaType;
5-
import com.fasterxml.jackson.databind.SerializationConfig;
6-
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
7-
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
3+
import tools.jackson.databind.JavaType;
4+
import tools.jackson.databind.SerializationConfig;
5+
import tools.jackson.databind.BeanDescription.Supplier;
6+
import tools.jackson.databind.ser.BeanPropertyWriter;
7+
import tools.jackson.databind.ser.ValueSerializerModifier;
88

99
import java.util.List;
1010

11-
public class JsonNullableBeanSerializerModifier extends BeanSerializerModifier
11+
public class JsonNullableValueSerializerModifier extends ValueSerializerModifier
1212
{
1313
@Override
1414
public List<BeanPropertyWriter> changeProperties(SerializationConfig config,
15-
BeanDescription beanDesc,
15+
Supplier beanDesc,
1616
List<BeanPropertyWriter> beanProperties)
1717
{
1818
for (int i = 0; i < beanProperties.size(); ++i) {

0 commit comments

Comments
 (0)