ACS-2236: Fixing NPE when no body provided for POST requests. (#840)

This commit is contained in:
mpichura
2021-12-13 10:09:41 +01:00
committed by GitHub
parent 4daeee054b
commit 49aed941a2
2 changed files with 41 additions and 9 deletions

View File

@@ -90,7 +90,9 @@ public class ContentStorageInformationImpl implements ContentStorageInformation
{ {
final NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, nodeId); final NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, nodeId);
final QName propQName = getQName(contentPropName); final QName propQName = getQName(contentPropName);
return contentService.requestSendContentToArchive(nodeRef, propQName, archiveContentRequest.getArchiveParams()); final Map<String, Serializable> archiveParams =
archiveContentRequest == null ? Collections.emptyMap() : archiveContentRequest.getArchiveParams();
return contentService.requestSendContentToArchive(nodeRef, propQName, archiveParams);
} }
/** /**
@@ -102,18 +104,19 @@ public class ContentStorageInformationImpl implements ContentStorageInformation
{ {
final NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, nodeId); final NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, nodeId);
final QName propQName = getQName(contentPropName); final QName propQName = getQName(contentPropName);
final Map<String, Serializable> restoreParams = restoreArchivedContentRequest.getRestorePriority() == null ? final Map<String, Serializable> restoreParams =
Collections.emptyMap() : (restoreArchivedContentRequest == null || restoreArchivedContentRequest.getRestorePriority() == null) ?
Map.of(ContentRestoreParams.RESTORE_PRIORITY.name(), restoreArchivedContentRequest.getRestorePriority()); Collections.emptyMap() :
try Map.of(ContentRestoreParams.RESTORE_PRIORITY.name(), restoreArchivedContentRequest.getRestorePriority());
try
{ {
return contentService.requestRestoreContentFromArchive(nodeRef, propQName, restoreParams); return contentService.requestRestoreContentFromArchive(nodeRef, propQName, restoreParams);
} }
catch (org.alfresco.service.cmr.repository.RestoreInProgressException e) catch (org.alfresco.service.cmr.repository.RestoreInProgressException e)
{ {
throw new RestoreInProgressException(e.getMsgId(), e); throw new RestoreInProgressException(e.getMsgId(), e);
} }
} }
private QName getQName(final String contentPropName) private QName getQName(final String contentPropName)

View File

@@ -118,6 +118,21 @@ public class ContentStorageInformationImplTest
assertEquals(expectedResult, requestArchiveContent); assertEquals(expectedResult, requestArchiveContent);
} }
@Test
public void shouldSucceedOnArchiveContentWhenNoRequestBody()
{
final NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, DUMMY_NODE_ID);
final Map<String, Serializable> archiveProps = Collections.emptyMap();
final boolean expectedResult = true;
when(contentService.requestSendContentToArchive(eq(nodeRef), any(QName.class), eq(archiveProps))).thenReturn(expectedResult);
when(namespaceService.getNamespaceURI(NamespaceService.CONTENT_MODEL_PREFIX)).thenReturn(NamespaceService.CONTENT_MODEL_1_0_URI);
final boolean requestArchiveContent = objectUnderTest.requestArchiveContent(DUMMY_NODE_ID, CONTENT_PROP_NAME, null);
assertEquals(expectedResult, requestArchiveContent);
}
@Test @Test
public void shouldNotSucceedOnArchiveContent() public void shouldNotSucceedOnArchiveContent()
{ {
@@ -167,6 +182,21 @@ public class ContentStorageInformationImplTest
assertEquals(expectedResult, requestArchiveContent); assertEquals(expectedResult, requestArchiveContent);
} }
@Test
public void shouldSucceedOnRestoreContentFromArchiveWhenNoRequestBody()
{
final NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, DUMMY_NODE_ID);
final boolean expectedResult = true;
when(contentService.requestRestoreContentFromArchive(eq(nodeRef), any(QName.class), eq(Collections.emptyMap())))
.thenReturn(expectedResult);
when(namespaceService.getNamespaceURI(NamespaceService.CONTENT_MODEL_PREFIX)).thenReturn(NamespaceService.CONTENT_MODEL_1_0_URI);
final boolean requestArchiveContent = objectUnderTest.requestRestoreContentFromArchive(DUMMY_NODE_ID, CONTENT_PROP_NAME, null);
assertEquals(expectedResult, requestArchiveContent);
}
@Test @Test
public void shouldNotSucceedOnRestoreContentFromArchive() public void shouldNotSucceedOnRestoreContentFromArchive()
{ {
@@ -191,7 +221,6 @@ public class ContentStorageInformationImplTest
final Map<String, Serializable> restoreParams = Map.of(ContentRestoreParams.RESTORE_PRIORITY.name(), STANDARD_PRIORITY); final Map<String, Serializable> restoreParams = Map.of(ContentRestoreParams.RESTORE_PRIORITY.name(), STANDARD_PRIORITY);
final RestoreArchivedContentRequest restoreArchivedContentRequest = new RestoreArchivedContentRequest(); final RestoreArchivedContentRequest restoreArchivedContentRequest = new RestoreArchivedContentRequest();
restoreArchivedContentRequest.setRestorePriority(STANDARD_PRIORITY); restoreArchivedContentRequest.setRestorePriority(STANDARD_PRIORITY);
final boolean expectedResult = false;
when(contentService.requestRestoreContentFromArchive(eq(nodeRef), any(QName.class), eq(restoreParams))).thenCallRealMethod(); when(contentService.requestRestoreContentFromArchive(eq(nodeRef), any(QName.class), eq(restoreParams))).thenCallRealMethod();
when(namespaceService.getNamespaceURI(NamespaceService.CONTENT_MODEL_PREFIX)).thenReturn(NamespaceService.CONTENT_MODEL_1_0_URI); when(namespaceService.getNamespaceURI(NamespaceService.CONTENT_MODEL_PREFIX)).thenReturn(NamespaceService.CONTENT_MODEL_1_0_URI);