Skip to content

Commit 5e29338

Browse files
authored
Avoid deprecated mappingException with SafeJsonMappingException (#1041)
Replace deprecated mappingException
1 parent bfaf6c7 commit 5e29338

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type: fix
2+
fix:
3+
description: Replace deprecated mappingException
4+
links:
5+
- https://github.com/palantir/conjure-java-runtime-api/pull/1041

extras/jackson-support/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ dependencies {
77
api "com.fasterxml.jackson.datatype:jackson-datatype-jsr310"
88
api "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor"
99

10+
implementation "com.palantir.safe-logging:safe-logging"
11+
1012
testImplementation 'org.junit.jupiter:junit-jupiter'
1113
testImplementation "org.assertj:assertj-core"
1214
}

extras/jackson-support/src/main/java/com/palantir/conjure/java/api/ext/jackson/PathDeserializer.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,15 @@
1919
import com.fasterxml.jackson.core.JsonParser;
2020
import com.fasterxml.jackson.core.JsonToken;
2121
import com.fasterxml.jackson.databind.DeserializationContext;
22+
import com.fasterxml.jackson.databind.JsonMappingException;
2223
import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
24+
import com.google.errorprone.annotations.CompileTimeConstant;
25+
import com.palantir.logsafe.Arg;
26+
import com.palantir.logsafe.SafeLoggable;
2327
import java.io.IOException;
2428
import java.nio.file.Path;
2529
import java.nio.file.Paths;
30+
import java.util.List;
2631

2732
public final class PathDeserializer extends StdScalarDeserializer<Path> {
2833
private static final long serialVersionUID = 1;
@@ -40,6 +45,26 @@ public Path deserialize(JsonParser parser, DeserializationContext ctxt) throws I
4045
}
4146
// 16-Oct-2015: should we perhaps allow JSON Arrays (of Strings) as well?
4247
}
43-
throw ctxt.mappingException(Path.class, token);
48+
throw new SafeJsonMappingException(
49+
"Could not deserialize path", parser, ctxt.wrongTokenException(parser, Path.class, token, null));
50+
}
51+
52+
private static final class SafeJsonMappingException extends JsonMappingException implements SafeLoggable {
53+
private final String logMessage;
54+
55+
SafeJsonMappingException(@CompileTimeConstant String message, JsonParser parser, JsonMappingException cause) {
56+
super(parser, message, cause);
57+
this.logMessage = message;
58+
}
59+
60+
@Override
61+
public String getLogMessage() {
62+
return logMessage;
63+
}
64+
65+
@Override
66+
public List<Arg<?>> getArgs() {
67+
return List.of();
68+
}
4469
}
4570
}

0 commit comments

Comments
 (0)