mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
APPS-361: [AGS/S3]Moving records between buckets in S3 (also possible moving records between stores-filecontenstore) fails
- Fixed issue and added unit tests
This commit is contained in:
@@ -415,7 +415,7 @@ public class RecordAspect extends AbstractDisposableItem
|
|||||||
@Behaviour
|
@Behaviour
|
||||||
(
|
(
|
||||||
kind = BehaviourKind.CLASS,
|
kind = BehaviourKind.CLASS,
|
||||||
notificationFrequency = NotificationFrequency.EVERY_EVENT
|
notificationFrequency = NotificationFrequency.FIRST_EVENT
|
||||||
)
|
)
|
||||||
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
||||||
{
|
{
|
||||||
@@ -425,7 +425,7 @@ public class RecordAspect extends AbstractDisposableItem
|
|||||||
ContentData contentAfter = (ContentData) after.get(ContentModel.PROP_CONTENT);
|
ContentData contentAfter = (ContentData) after.get(ContentModel.PROP_CONTENT);
|
||||||
|
|
||||||
// Check only storeNameAfter since the store name is updated before this method is triggered
|
// Check only storeNameAfter since the store name is updated before this method is triggered
|
||||||
// Does not allow content setting content to null when moving content between stores (case not covered by
|
// Does not allow setting content to null when moving content between stores (case not covered by
|
||||||
// ContentPropertyRestrictionInterceptor)
|
// ContentPropertyRestrictionInterceptor)
|
||||||
if (storeNameAfter != null && contentAfter != null)
|
if (storeNameAfter != null && contentAfter != null)
|
||||||
{
|
{
|
||||||
|
@@ -29,19 +29,29 @@ package org.alfresco.module.org_alfresco_module_rm.model.rma.aspect;
|
|||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static java.util.Collections.emptyList;
|
import static java.util.Collections.emptyList;
|
||||||
|
|
||||||
import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_ARCHIVED;
|
import static org.alfresco.model.ContentModel.PROP_CONTENT;
|
||||||
|
import static org.alfresco.model.ContentModel.PROP_STORE_NAME;
|
||||||
import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_RECORD;
|
import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_RECORD;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.mockito.MockitoAnnotations.initMocks;
|
import static org.mockito.MockitoAnnotations.initMocks;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.util.ContentBinDuplicationUtility;
|
import org.alfresco.module.org_alfresco_module_rm.util.ContentBinDuplicationUtility;
|
||||||
|
import org.alfresco.repo.node.integrity.IntegrityException;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
|
import org.alfresco.service.cmr.repository.ContentData;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -123,5 +133,27 @@ public class RecordAspectUnitTest
|
|||||||
verify(mockContentBinDuplicationUtility, times(1)).duplicate(COPY_REF);
|
verify(mockContentBinDuplicationUtility, times(1)).duplicate(COPY_REF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that an IntegrityException is thrown when content is changed
|
||||||
|
*/
|
||||||
|
@Test (expected = IntegrityException.class)
|
||||||
|
public void testOnUpdatePropertiesContentChanged()
|
||||||
|
{
|
||||||
|
Map<QName, Serializable> before = ImmutableMap.of(PROP_CONTENT, new ContentData("dummyContentUrl", "text/plain",
|
||||||
|
0L, "UTF-8", Locale.UK));
|
||||||
|
Map<QName, Serializable> after = ImmutableMap.of(PROP_CONTENT, new ContentData("dummyContentUrl", "text/plain", 0L, "UTF-8", Locale.UK));
|
||||||
|
recordAspect.onUpdateProperties(NODE_REF, before, after);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that no exception is thrown when moving record between stores
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testOnUpdatePropertiesContentMovedToAnotherStore()
|
||||||
|
{
|
||||||
|
Map<QName, Serializable> before = ImmutableMap.of(PROP_CONTENT, new ContentData("dummyContentUrl", "text/plain", 0L, "UTF" +
|
||||||
|
"-8", Locale.UK));
|
||||||
|
Map<QName, Serializable> after = ImmutableMap.of(PROP_CONTENT, new ContentData("dummyContentUrl", "text/plain", 0L, "UTF-8", Locale.UK), PROP_STORE_NAME, "store2");
|
||||||
|
recordAspect.onUpdateProperties(NODE_REF, before, after);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user