mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
REPO-2257 - Service Pack: MNT-17661: Copy action copies thumbnail modification data
- fix ThumbnailService to use "do nothing" copy behaviour for "cm:thumbnailModification" aspect - add embedded unit test git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@136840 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -39,6 +39,10 @@ import org.alfresco.model.ContentModel;
|
|||||||
import org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerOptions;
|
import org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerOptions;
|
||||||
import org.alfresco.repo.content.transform.magick.ImageTransformationOptions;
|
import org.alfresco.repo.content.transform.magick.ImageTransformationOptions;
|
||||||
import org.alfresco.repo.content.transform.swf.SWFTransformationOptions;
|
import org.alfresco.repo.content.transform.swf.SWFTransformationOptions;
|
||||||
|
import org.alfresco.repo.copy.CopyBehaviourCallback;
|
||||||
|
import org.alfresco.repo.copy.CopyDetails;
|
||||||
|
import org.alfresco.repo.copy.CopyServicePolicies;
|
||||||
|
import org.alfresco.repo.copy.DoNothingCopyBehaviourCallback;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies;
|
import org.alfresco.repo.node.NodeServicePolicies;
|
||||||
import org.alfresco.repo.policy.Behaviour;
|
import org.alfresco.repo.policy.Behaviour;
|
||||||
import org.alfresco.repo.policy.BehaviourFilter;
|
import org.alfresco.repo.policy.BehaviourFilter;
|
||||||
@@ -213,6 +217,12 @@ public class ThumbnailServiceImpl implements ThumbnailService,
|
|||||||
ContentModel.TYPE_THUMBNAIL,
|
ContentModel.TYPE_THUMBNAIL,
|
||||||
new JavaBehaviour(this, "onDeleteNode", Behaviour.NotificationFrequency.EVERY_EVENT));
|
new JavaBehaviour(this, "onDeleteNode", Behaviour.NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
|
// Register copy class behaviour
|
||||||
|
this.policyComponent.bindClassBehaviour(
|
||||||
|
CopyServicePolicies.OnCopyNodePolicy.QNAME,
|
||||||
|
ContentModel.ASPECT_THUMBNAIL_MODIFICATION,
|
||||||
|
new JavaBehaviour(this, "getCopyCallback"));
|
||||||
|
|
||||||
transactionListener = new ThumbnailTransactionListenerAdapter();
|
transactionListener = new ThumbnailTransactionListenerAdapter();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -928,4 +938,14 @@ public class ThumbnailServiceImpl implements ThumbnailService,
|
|||||||
}, AuthenticationUtil.getSystemUserName());
|
}, AuthenticationUtil.getSystemUserName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See init - eg. registers "do nothing" copy behaviour for "cm:thumbnailModification" aspect
|
||||||
|
*
|
||||||
|
* @return Returns {@link DoNothingCopyBehaviourCallback}
|
||||||
|
*/
|
||||||
|
public CopyBehaviourCallback getCopyCallback(QName classRef, CopyDetails copyDetails)
|
||||||
|
{
|
||||||
|
return DoNothingCopyBehaviourCallback.getInstance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -65,6 +65,7 @@ import org.alfresco.service.cmr.repository.ContentIOException;
|
|||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.service.cmr.repository.ContentServiceTransientException;
|
import org.alfresco.service.cmr.repository.ContentServiceTransientException;
|
||||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||||
|
import org.alfresco.service.cmr.repository.CopyService;
|
||||||
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.cmr.repository.PagedSourceOptions;
|
import org.alfresco.service.cmr.repository.PagedSourceOptions;
|
||||||
@@ -117,6 +118,7 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest
|
|||||||
private Repository repositoryHelper;
|
private Repository repositoryHelper;
|
||||||
private PermissionService permissionService;
|
private PermissionService permissionService;
|
||||||
private LockService lockService;
|
private LockService lockService;
|
||||||
|
private CopyService copyService;
|
||||||
|
|
||||||
private NodeRef folder;
|
private NodeRef folder;
|
||||||
private static final String TEST_FAILING_MIME_TYPE = "application/vnd.alfresco.test.transientfailure";
|
private static final String TEST_FAILING_MIME_TYPE = "application/vnd.alfresco.test.transientfailure";
|
||||||
@@ -146,6 +148,7 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest
|
|||||||
this.repositoryHelper = (Repository) this.applicationContext.getBean("repositoryHelper");
|
this.repositoryHelper = (Repository) this.applicationContext.getBean("repositoryHelper");
|
||||||
this.permissionService = (PermissionService) applicationContext.getBean("PermissionService");
|
this.permissionService = (PermissionService) applicationContext.getBean("PermissionService");
|
||||||
this.lockService = (LockService) applicationContext.getBean("lockService");
|
this.lockService = (LockService) applicationContext.getBean("lockService");
|
||||||
|
this.copyService = (CopyService) applicationContext.getBean("CopyService");
|
||||||
|
|
||||||
// Create a folder and some content
|
// Create a folder and some content
|
||||||
Map<QName, Serializable> folderProps = new HashMap<QName, Serializable>(1);
|
Map<QName, Serializable> folderProps = new HashMap<QName, Serializable>(1);
|
||||||
@@ -679,6 +682,35 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest
|
|||||||
assertFalse("Property 'Last thumbnail modification data' has not changed", lastThumbnailDataV1.equals(lastThumbnailDataV2));
|
assertFalse("Property 'Last thumbnail modification data' has not changed", lastThumbnailDataV1.equals(lastThumbnailDataV2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See REPO-2257, MNT-17661
|
||||||
|
*/
|
||||||
|
public void testLastThumbnailModificationDataContentCopy() throws Exception
|
||||||
|
{
|
||||||
|
final NodeRef pdfOrig = createOriginalContent(this.folder, MimetypeMap.MIMETYPE_PDF);
|
||||||
|
QName qname = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "doclib");
|
||||||
|
|
||||||
|
ThumbnailDefinition details = thumbnailService.getThumbnailRegistry().getThumbnailDefinition(qname.getLocalName());
|
||||||
|
NodeRef thumbnail = this.thumbnailService.createThumbnail(pdfOrig, ContentModel.PROP_CONTENT, MimetypeMap.MIMETYPE_IMAGE_JPEG,
|
||||||
|
details.getTransformationOptions(), "doclib");
|
||||||
|
assertNotNull(thumbnail);
|
||||||
|
|
||||||
|
setComplete();
|
||||||
|
endTransaction();
|
||||||
|
|
||||||
|
Thread.sleep(1000);
|
||||||
|
|
||||||
|
// Get initial value of property "Last thumbnail modification data"
|
||||||
|
List<String>lastThumbnailData = (List<String>)this.secureNodeService.getProperty(pdfOrig, ContentModel.PROP_LAST_THUMBNAIL_MODIFICATION_DATA);
|
||||||
|
assertNotNull(lastThumbnailData);
|
||||||
|
assertEquals(1, lastThumbnailData.size());
|
||||||
|
assertTrue(lastThumbnailData.get(0).contains("doclib:"));
|
||||||
|
|
||||||
|
final NodeRef pdfCopy = copyService.copy(pdfOrig, this.folder, ContentModel.ASSOC_CONTAINS, QName.createQName("copyOfOriginal"));
|
||||||
|
List<String> lastThumbnailDataCopy = (List<String>)this.secureNodeService.getProperty(pdfCopy, ContentModel.PROP_LAST_THUMBNAIL_MODIFICATION_DATA);
|
||||||
|
assertNull(lastThumbnailDataCopy);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See REPO-1580, MNT-17113 (and related)
|
* See REPO-1580, MNT-17113 (and related)
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user