Skip to content

Commit ad33a82

Browse files
committed
Apply code review feedback
* Add try-catch for valueToTree() call * Remove conditional module checks in tests * Update jsonAvailable() to check Jackson 3 Signed-off-by: Jooyoung Pyoung <[email protected]>
1 parent 347eea9 commit ad33a82

File tree

3 files changed

+15
-34
lines changed

3 files changed

+15
-34
lines changed

spring-integration-core/src/main/java/org/springframework/integration/support/json/JacksonJsonObjectMapper.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void toJson(Object value, Writer writer) throws IOException {
8989
this.objectMapper.writeValue(writer, value);
9090
}
9191
catch (JacksonException e) {
92-
throw new IOException(e);
92+
throw new IOException(e);
9393
}
9494
}
9595

@@ -122,7 +122,12 @@ else if (json instanceof Reader) {
122122
// Otherwise the input might not be valid JSON, fallback to TextNode with ObjectMapper.valueToTree()
123123
}
124124

125-
return this.objectMapper.valueToTree(json);
125+
try {
126+
return this.objectMapper.valueToTree(json);
127+
}
128+
catch (JacksonException e) {
129+
throw new IOException(e);
130+
}
126131
}
127132

128133
@Override

spring-integration-core/src/main/java/org/springframework/integration/support/json/JsonObjectMapperProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
*
2929
* @since 3.0
3030
*
31+
* @see JacksonJsonObjectMapper
3132
* @see Jackson2JsonObjectMapper
3233
*/
3334
public final class JsonObjectMapperProvider {
@@ -58,7 +59,7 @@ else if (JacksonPresent.isJackson3Present()) {
5859
* @since 4.2.7
5960
*/
6061
public static boolean jsonAvailable() {
61-
return JacksonPresent.isJackson2Present();
62+
return JacksonPresent.isJackson3Present() || JacksonPresent.isJackson2Present();
6263
}
6364

6465
}
Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.time.LocalDateTime;
3131
import java.time.ZoneId;
3232
import java.time.ZonedDateTime;
33-
import java.util.ArrayList;
3433
import java.util.Arrays;
3534
import java.util.Collection;
3635
import java.util.Date;
@@ -53,8 +52,6 @@
5352
import tools.jackson.datatype.joda.JodaModule;
5453
import tools.jackson.module.kotlin.KotlinModule;
5554

56-
import org.springframework.util.ClassUtils;
57-
5855
import static org.assertj.core.api.Assertions.assertThat;
5956
import static org.assertj.core.api.Assertions.assertThatThrownBy;
6057

@@ -63,14 +60,11 @@
6360
*
6461
* @since 7.0
6562
*/
66-
class JacksonJsonObjectMapperTest {
63+
class JacksonJsonObjectMapperTests {
6764

68-
private static final boolean JODA_MODULE_PRESENT =
69-
ClassUtils.isPresent("tools.jackson.datatype.joda.JodaModule", null);
65+
private static final JacksonModule JODA_MODULE = new JodaModule();
7066

71-
private static final boolean KOTLIN_MODULE_PRESENT =
72-
ClassUtils.isPresent("kotlin.Unit", null) &&
73-
ClassUtils.isPresent("tools.jackson.module.kotlin.KotlinModule", null);
67+
private static final JacksonModule KOTLIN_MODULE = new KotlinModule.Builder().build();
7468

7569
private JacksonJsonObjectMapper mapper;
7670

@@ -230,7 +224,7 @@ public void testJavaTime() throws Exception {
230224
public void testJodaWithJodaModule() throws Exception {
231225
ObjectMapper objectMapper = mapper.getObjectMapper();
232226
Set<String> registeredModules = getModuleNames(objectMapper.getRegisteredModules());
233-
assertThat(registeredModules.contains(JodaModuleProvider.MODULE.getModuleName())).isTrue();
227+
assertThat(registeredModules.contains(JODA_MODULE.getModuleName())).isTrue();
234228

235229
org.joda.time.DateTime jodaDateTime = new DateTime(2000, 1, 1, 0, 0, DateTimeZone.UTC);
236230
JodaData data = new JodaData("John", jodaDateTime);
@@ -249,7 +243,7 @@ public void testJodaWithoutJodaModule() {
249243
JacksonJsonObjectMapper mapper = new JacksonJsonObjectMapper(customMapper);
250244

251245
Set<String> registeredModules = getModuleNames(mapper.getObjectMapper().getRegisteredModules());
252-
assertThat(registeredModules.contains(JodaModuleProvider.MODULE.getModuleName())).isFalse();
246+
assertThat(registeredModules.contains(JODA_MODULE.getModuleName())).isFalse();
253247

254248
org.joda.time.DateTime jodaDateTime = new DateTime(2000, 1, 1, 0, 0, DateTimeZone.UTC);
255249
JodaData data = new JodaData("John", jodaDateTime);
@@ -268,27 +262,8 @@ private Set<String> getModuleNames(Collection<JacksonModule> modules) {
268262
.collect(Collectors.toUnmodifiableSet());
269263
}
270264

271-
private static final class JodaModuleProvider {
272-
273-
private static final JacksonModule MODULE = new JodaModule();
274-
275-
}
276-
277-
private static final class KotlinModuleProvider {
278-
279-
private static final JacksonModule MODULE = new KotlinModule.Builder().build();
280-
281-
}
282-
283265
private List<JacksonModule> collectWellKnownModulesIfAvailable() {
284-
List<JacksonModule> modules = new ArrayList<>();
285-
if (JODA_MODULE_PRESENT) {
286-
modules.add(JodaModuleProvider.MODULE);
287-
}
288-
if (KOTLIN_MODULE_PRESENT) {
289-
modules.add(KotlinModuleProvider.MODULE);
290-
}
291-
return modules;
266+
return List.of(JODA_MODULE, KOTLIN_MODULE);
292267
}
293268

294269
private record TestData(String name, Optional<String> email, Optional<Integer> age) {

0 commit comments

Comments
 (0)