Fix infinite recursion bug leading to a StackOverflowError.
Renamed the convertObjectToJson(:Object) method in the JSONFormatterPdxToJsonConverter class to convertPojoToJson(:Object). Resolves gh-67.
This commit is contained in:
@@ -62,7 +62,7 @@ public class JSONFormatterPdxToJsonConverter extends JacksonObjectToJsonConverte
|
||||
.filter(PdxInstance.class::isInstance)
|
||||
.map(PdxInstance.class::cast)
|
||||
.map(this::convertPdxToJson)
|
||||
.orElseGet(() -> convertObjectToJson(source));
|
||||
.orElseGet(() -> convertPojoToJson(source));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,7 +72,7 @@ public class JSONFormatterPdxToJsonConverter extends JacksonObjectToJsonConverte
|
||||
* @return the JSON generated from the given {@link Object}.
|
||||
* @see JacksonObjectToJsonConverter#convert(Object)
|
||||
*/
|
||||
protected @Nullable String convertObjectToJson(Object source) {
|
||||
protected @Nullable String convertPojoToJson(Object source) {
|
||||
return super.convert(source);
|
||||
}
|
||||
|
||||
@@ -86,8 +86,8 @@ public class JSONFormatterPdxToJsonConverter extends JacksonObjectToJsonConverte
|
||||
* @see #jsonFormatterToJson(PdxInstance)
|
||||
*/
|
||||
protected @NonNull String convertPdxToJson(@NonNull PdxInstance pdxInstance) {
|
||||
//return JSONFormatter.toJSON(pdxInstance);
|
||||
//return JSONFormatter.toJSON(decorate(pdxInstance));
|
||||
//return jsonFormatterToJson(pdxInstance);
|
||||
//return jsonFormatterToJson(decorate(pdxInstance));
|
||||
return decorate(pdxInstance, jsonFormatterToJson(pdxInstance));
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ public class JSONFormatterPdxToJsonConverter extends JacksonObjectToJsonConverte
|
||||
catch (JsonProcessingException cause) {
|
||||
|
||||
if (hasValidClassName(pdxInstance)) {
|
||||
return convertObjectToJson(pdxInstance.getObject());
|
||||
return convertPojoToJson(pdxInstance.getObject());
|
||||
}
|
||||
|
||||
String message = String.format("Failed to parse JSON [%s]", json);
|
||||
|
||||
@@ -74,11 +74,11 @@ public class JSONFormatterPdxToJsonConverterUnitTests {
|
||||
|
||||
JSONFormatterPdxToJsonConverter converter = spy(new JSONFormatterPdxToJsonConverter());
|
||||
|
||||
doReturn(json).when(converter).convertObjectToJson(eq(object));
|
||||
doReturn(json).when(converter).convertPojoToJson(eq(object));
|
||||
|
||||
assertThat(converter.convert(object)).isEqualTo(json);
|
||||
|
||||
verify(converter, times(1)).convertObjectToJson(eq(object));
|
||||
verify(converter, times(1)).convertPojoToJson(eq(object));
|
||||
verify(converter, never()).convertPdxToJson(any());
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ public class JSONFormatterPdxToJsonConverterUnitTests {
|
||||
assertThat(converter.convert(mockPdxInstance)).isEqualTo(json);
|
||||
|
||||
verify(converter, times(1)).convertPdxToJson(eq(mockPdxInstance));
|
||||
verify(converter, never()).convertObjectToJson(any());
|
||||
verify(converter, never()).convertPojoToJson(any());
|
||||
verifyNoInteractions(mockPdxInstance);
|
||||
}
|
||||
|
||||
@@ -370,7 +370,7 @@ public class JSONFormatterPdxToJsonConverterUnitTests {
|
||||
doReturn(false).when(mockPdxInstance).hasField(anyString());
|
||||
doReturn(mockObjectMapper).when(converter).newObjectMapper(eq(json));
|
||||
doThrow(new JsonGenerationException("TEST", (JsonGenerator) null)).when(mockObjectMapper).readTree(eq(json));
|
||||
doReturn(json).when(converter).convertObjectToJson(eq(jonDoe));
|
||||
doReturn(json).when(converter).convertPojoToJson(eq(jonDoe));
|
||||
|
||||
assertThat(converter.decorate(mockPdxInstance, json)).isEqualTo(json);
|
||||
|
||||
@@ -380,7 +380,7 @@ public class JSONFormatterPdxToJsonConverterUnitTests {
|
||||
verify(mockObjectMapper, times(1)).readTree(eq(json));
|
||||
verify(mockPdxInstance, times(1)).getClassName();
|
||||
verify(mockPdxInstance, times(1)).getObject();
|
||||
verify(converter, times(1)).convertObjectToJson(eq(jonDoe));
|
||||
verify(converter, times(1)).convertPojoToJson(eq(jonDoe));
|
||||
verifyNoMoreInteractions(mockPdxInstance, mockObjectMapper);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user