Skip to content

Commit 66333dd

Browse files
mohamedsamehsalahStephan202
authored andcommitted
Introduce ObjectMapperValueToTree refaster rule
1 parent d375ed4 commit 66333dd

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

error-prone-contrib/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@
4747
<artifactId>jackson-annotations</artifactId>
4848
<scope>provided</scope>
4949
</dependency>
50+
<dependency>
51+
<groupId>com.fasterxml.jackson.core</groupId>
52+
<artifactId>jackson-core</artifactId>
53+
</dependency>
5054
<dependency>
5155
<groupId>com.fasterxml.jackson.core</groupId>
5256
<artifactId>jackson-databind</artifactId>

error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/JacksonRules.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package tech.picnic.errorprone.refasterrules;
22

3+
import com.fasterxml.jackson.core.JsonProcessingException;
34
import com.fasterxml.jackson.databind.JsonNode;
5+
import com.fasterxml.jackson.databind.ObjectMapper;
46
import com.google.errorprone.refaster.Refaster;
57
import com.google.errorprone.refaster.annotation.AfterTemplate;
68
import com.google.errorprone.refaster.annotation.BeforeTemplate;
@@ -45,4 +47,17 @@ Optional<JsonNode> after(JsonNode node, String fieldName) {
4547
return node.optional(fieldName);
4648
}
4749
}
50+
51+
/** Prefer {@link ObjectMapper#valueToTree(Object)} over more contrived alternatives. */
52+
static final class ObjectMapperValueToTree {
53+
@BeforeTemplate
54+
JsonNode before(ObjectMapper objectMapper, Object object) throws JsonProcessingException {
55+
return objectMapper.readTree(objectMapper.writeValueAsString(object));
56+
}
57+
58+
@AfterTemplate
59+
JsonNode after(ObjectMapper objectMapper, Object object) {
60+
return objectMapper.valueToTree(object);
61+
}
62+
}
4863
}

error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JacksonRulesTestInput.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package tech.picnic.errorprone.refasterrules;
22

3+
import com.fasterxml.jackson.core.JsonProcessingException;
34
import com.fasterxml.jackson.databind.JsonNode;
5+
import com.fasterxml.jackson.databind.ObjectMapper;
46
import com.fasterxml.jackson.databind.node.NullNode;
57
import com.google.common.collect.ImmutableSet;
68
import java.util.Optional;
@@ -22,4 +24,8 @@ ImmutableSet<Optional<JsonNode>> testJsonNodeOptionalString() {
2224
Optional.of(NullNode.getInstance().get("baz")),
2325
Optional.ofNullable(NullNode.getInstance().get("qux")));
2426
}
27+
28+
JsonNode testObjectMapperValueToTree() throws JsonProcessingException {
29+
return new ObjectMapper().readTree(new ObjectMapper().writeValueAsString("foo"));
30+
}
2531
}

error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/JacksonRulesTestOutput.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package tech.picnic.errorprone.refasterrules;
22

3+
import com.fasterxml.jackson.core.JsonProcessingException;
34
import com.fasterxml.jackson.databind.JsonNode;
5+
import com.fasterxml.jackson.databind.ObjectMapper;
46
import com.fasterxml.jackson.databind.node.NullNode;
57
import com.google.common.collect.ImmutableSet;
68
import java.util.Optional;
@@ -22,4 +24,8 @@ ImmutableSet<Optional<JsonNode>> testJsonNodeOptionalString() {
2224
NullNode.getInstance().optional("baz"),
2325
NullNode.getInstance().optional("qux"));
2426
}
27+
28+
JsonNode testObjectMapperValueToTree() throws JsonProcessingException {
29+
return new ObjectMapper().valueToTree("foo");
30+
}
2531
}

0 commit comments

Comments
 (0)