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:
John Blum
2020-05-12 22:01:22 -07:00
parent 854a233b04
commit fa9b2e1ae6
2 changed files with 10 additions and 10 deletions

View File

@@ -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);

View File

@@ -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);
}