Skip to content

Commit b1c4dd5

Browse files
committed
aligned over bson4jackson 2.8.0 which should fix weird date deserialization errors
1 parent 54df635 commit b1c4dd5

File tree

5 files changed

+32
-17
lines changed

5 files changed

+32
-17
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484

8585
<!-- Mongo modules -->
8686
<mongo-java-driver.version>3.4.0</mongo-java-driver.version>
87-
<bson4jackson.version>2.7.0</bson4jackson.version>
87+
<bson4jackson.version>2.8.0</bson4jackson.version>
8888
<jongo.version>1.3.0</jongo.version>
8989
<de.flapdoodle.embed.version>1.42</de.flapdoodle.embed.version>
9090

restx-jongo-java8/src/main/java/restx/jongo/BsonJSR310Module.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package restx.jongo;
22

3+
import com.fasterxml.jackson.core.JsonGenerator;
34
import com.fasterxml.jackson.core.JsonParser;
45
import com.fasterxml.jackson.core.JsonProcessingException;
56
import com.fasterxml.jackson.databind.DeserializationContext;
67
import com.fasterxml.jackson.databind.JsonDeserializer;
8+
import com.fasterxml.jackson.databind.JsonSerializer;
79
import com.fasterxml.jackson.databind.SerializerProvider;
810
import com.fasterxml.jackson.databind.module.SimpleModule;
911
import de.undercouch.bson4jackson.BsonGenerator;
10-
import de.undercouch.bson4jackson.serializers.BsonSerializer;
1112

1213
import java.io.IOException;
1314
import java.time.Instant;
@@ -17,14 +18,20 @@ public class BsonJSR310Module extends SimpleModule {
1718
public BsonJSR310Module() {
1819
super("BsonJSR310Module");
1920

20-
addSerializer(Instant.class, new BsonSerializer<Instant>() {
21+
addSerializer(Instant.class, new JsonSerializer<Instant>() {
2122
@Override
22-
public void serialize(Instant date, BsonGenerator bsonGenerator, SerializerProvider serializerProvider)
23+
public void serialize(Instant date, JsonGenerator gen, SerializerProvider provider)
2324
throws IOException {
2425
if (date == null) {
25-
serializerProvider.defaultSerializeNull(bsonGenerator);
26+
provider.defaultSerializeNull(gen);
2627
} else {
27-
bsonGenerator.writeDateTime(new Date(date.toEpochMilli()));
28+
long epochMillis = date.toEpochMilli();
29+
if (gen instanceof BsonGenerator) {
30+
BsonGenerator bgen = (BsonGenerator)gen;
31+
bgen.writeDateTime(new Date(epochMillis));
32+
} else {
33+
gen.writeNumber(epochMillis);
34+
}
2835
}
2936
}
3037
});

restx-jongo/module.ivy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="2.8.10" conf="default" />
2323
<dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="2.8.10" conf="default" />
2424
<dependency org="com.fasterxml.jackson.datatype" name="jackson-datatype-joda" rev="2.8.10" conf="default" />
25-
<dependency org="de.undercouch" name="bson4jackson" rev="2.7.0" conf="default" />
25+
<dependency org="de.undercouch" name="bson4jackson" rev="2.8.0" conf="default" />
2626
<dependency org="org.mongodb" name="mongo-java-driver" rev="3.4.0" conf="default" />
2727
<dependency org="org.jongo" name="jongo" rev="1.3.0" conf="default" />
2828
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="default" />

restx-jongo/src/main/java/restx/jackson/BsonJodaTimeModule.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package restx.jackson;
22

3+
import com.fasterxml.jackson.core.JsonGenerator;
34
import com.fasterxml.jackson.core.JsonParser;
45
import com.fasterxml.jackson.core.JsonProcessingException;
56
import com.fasterxml.jackson.databind.DeserializationContext;
67
import com.fasterxml.jackson.databind.JsonDeserializer;
8+
import com.fasterxml.jackson.databind.JsonSerializer;
79
import com.fasterxml.jackson.databind.SerializerProvider;
810
import com.fasterxml.jackson.databind.module.SimpleModule;
911
import de.undercouch.bson4jackson.BsonGenerator;
10-
import de.undercouch.bson4jackson.serializers.BsonSerializer;
12+
import org.joda.time.DateMidnight;
1113
import org.joda.time.DateTime;
1214
import org.joda.time.DateTimeZone;
1315

@@ -23,25 +25,31 @@ public class BsonJodaTimeModule extends SimpleModule {
2325
public BsonJodaTimeModule() {
2426
super("BsonJodaTimeModule");
2527

26-
addSerializer(org.joda.time.DateMidnight.class, new BsonSerializer<org.joda.time.DateMidnight>() {
28+
addSerializer(org.joda.time.DateMidnight.class, new JsonSerializer<DateMidnight>() {
2729
@Override
28-
public void serialize(org.joda.time.DateMidnight date, BsonGenerator bsonGenerator, SerializerProvider serializerProvider)
30+
public void serialize(org.joda.time.DateMidnight date, JsonGenerator gen, SerializerProvider provider)
2931
throws IOException {
3032
if (date == null) {
31-
serializerProvider.defaultSerializeNull(bsonGenerator);
33+
provider.defaultSerializeNull(gen);
34+
} else if (gen instanceof BsonGenerator) {
35+
BsonGenerator bgen = (BsonGenerator)gen;
36+
bgen.writeDateTime(date.toDate());
3237
} else {
33-
bsonGenerator.writeDateTime(date.toDate());
38+
gen.writeNumber(date.getMillis());
3439
}
3540
}
3641
});
37-
addSerializer(DateTime.class, new BsonSerializer<DateTime>() {
42+
addSerializer(DateTime.class, new JsonSerializer<DateTime>() {
3843
@Override
39-
public void serialize(DateTime date, BsonGenerator bsonGenerator, SerializerProvider serializerProvider)
44+
public void serialize(DateTime date, JsonGenerator gen, SerializerProvider provider)
4045
throws IOException {
4146
if (date == null) {
42-
serializerProvider.defaultSerializeNull(bsonGenerator);
47+
provider.defaultSerializeNull(gen);
48+
} else if (gen instanceof BsonGenerator) {
49+
BsonGenerator bgen = (BsonGenerator)gen;
50+
bgen.writeDateTime(date.toDate());
4351
} else {
44-
bsonGenerator.writeDateTime(date.toDate());
52+
gen.writeNumber(date.getMillis());
4553
}
4654
}
4755
});

restx.build.properties.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"javax.inject.version": "1",
2929

3030
"mongo-java-driver.version": "3.4.0",
31-
"bson4jackson.version": "2.7.0",
31+
"bson4jackson.version": "2.8.0",
3232
"jongo.version": "1.3.0",
3333

3434
"servlet-api.version": "2.5",

0 commit comments

Comments
 (0)