From a3ccafb035620af98bbc6c9b12508a5335c41afc Mon Sep 17 00:00:00 2001 From: Eva Vasques Date: Wed, 8 Nov 2023 14:58:08 +0000 Subject: [PATCH] MNT-23927 Handle JsonMappingException and JsonGenerationException (#2289) * Throw JSON exceptions as IO exceptions to be properly handled * Log null prop keys * Fix test to have the mocked response different than null --- .../rest/framework/jacksonextensions/JacksonHelper.java | 8 ++------ .../rest/framework/tests/core/ExecutionTests.java | 6 ++++-- .../repo/domain/propval/AbstractPropertyValueDAOImpl.java | 4 ++++ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/remote-api/src/main/java/org/alfresco/rest/framework/jacksonextensions/JacksonHelper.java b/remote-api/src/main/java/org/alfresco/rest/framework/jacksonextensions/JacksonHelper.java index a707cf69c0..75e4bcde51 100644 --- a/remote-api/src/main/java/org/alfresco/rest/framework/jacksonextensions/JacksonHelper.java +++ b/remote-api/src/main/java/org/alfresco/rest/framework/jacksonextensions/JacksonHelper.java @@ -104,13 +104,9 @@ public class JacksonHelper implements InitializingBean JsonGenerator generator = objectMapper.getFactory().createGenerator(outStream, encoding); writer.writeContents(generator, objectMapper); } - catch (JsonMappingException error) + catch (JsonMappingException | JsonGenerationException error) { - logger.error("Failed to write Json output", error); - } - catch (JsonGenerationException generror) - { - logger.error("Failed to write Json output", generror); + throw new IOException("Failed to write Json output", error); } } diff --git a/remote-api/src/test/java/org/alfresco/rest/framework/tests/core/ExecutionTests.java b/remote-api/src/test/java/org/alfresco/rest/framework/tests/core/ExecutionTests.java index ce45020a64..6f20ef3040 100644 --- a/remote-api/src/test/java/org/alfresco/rest/framework/tests/core/ExecutionTests.java +++ b/remote-api/src/test/java/org/alfresco/rest/framework/tests/core/ExecutionTests.java @@ -262,13 +262,15 @@ public class ExecutionTests extends AbstractContextTest implements ResponseWrite { AbstractResourceWebScript executor = getExecutor(); Map templateVars = new HashMap(); + + WebScriptResponse response = mockResponse(); templateVars.put("apiScope", "private"); templateVars.put("apiVersion", "1"); templateVars.put("apiName", "alfrescomock"); templateVars.put(ResourceLocator.COLLECTION_RESOURCE, "sheep"); - executor.execute(ApiAssistant.determineApi(templateVars), mockRequest(templateVars,new HashMap>(1)), mock(WebScriptResponse.class)); + executor.execute(ApiAssistant.determineApi(templateVars), mockRequest(templateVars,new HashMap>(1)), response); - WebScriptResponse response = mockResponse(); + response = mockResponse(); templateVars.put(ResourceLocator.COLLECTION_RESOURCE, "bad"); executor.execute(api, mockRequest(templateVars,new HashMap>(1)), response); //throws a runtime exception so INTERNAL_SERVER_ERROR diff --git a/repository/src/main/java/org/alfresco/repo/domain/propval/AbstractPropertyValueDAOImpl.java b/repository/src/main/java/org/alfresco/repo/domain/propval/AbstractPropertyValueDAOImpl.java index 313d704993..e0e5848c22 100644 --- a/repository/src/main/java/org/alfresco/repo/domain/propval/AbstractPropertyValueDAOImpl.java +++ b/repository/src/main/java/org/alfresco/repo/domain/propval/AbstractPropertyValueDAOImpl.java @@ -1614,6 +1614,10 @@ public abstract class AbstractPropertyValueDAOImpl implements PropertyValueDAO { Map map = (Map) container; Serializable mapKey = getPropertyValueById(keyPropId).getSecond(); + if(mapKey == null) + { + logger.error("Found null key for id " + keyPropId + " with value " + value); + } map.put(mapKey, value); } else if (container instanceof Collection)