mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Revert "Revert "Merge remote-tracking branch 'remotes/origin/feature-2.7/RM-6787_ReduceBinDuplication_V3' into feature-2.7/RM-6787_VersionChangeTests_no""
This reverts commit eb9071fb73
.
This commit is contained in:
@@ -248,6 +248,11 @@
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean name="contentBinDuplicationUtility" class="org.alfresco.module.org_alfresco_module_rm.util.ContentBinDuplicationUtility">
|
||||
<property name="behaviourFilter" ref="policyBehaviourFilter"/>
|
||||
<property name="contentService" ref="contentService"/>
|
||||
</bean>
|
||||
|
||||
<!-- Prevent ghosted records being renditioned -->
|
||||
<bean id="noRenditionsForGhosts" parent="baseRenditionPreventionClass">
|
||||
<constructor-arg value="rma:ghosted"/>
|
||||
|
@@ -143,6 +143,7 @@
|
||||
<property name="recordService" ref="RecordService" />
|
||||
<property name="dispositionService" ref="DispositionService" />
|
||||
<property name="quickShareService" ref="QuickShareService"/>
|
||||
<property name="contentBinDuplicationUtility" ref="contentBinDuplicationUtility"/>
|
||||
</bean>
|
||||
|
||||
<bean id="rma.recordComponentIdentifier" class="org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.RecordComponentIdentifierAspect" parent="rm.baseBehaviour">
|
||||
|
@@ -16,6 +16,7 @@
|
||||
<bean id="rmv.versionRecord" class="org.alfresco.module.org_alfresco_module_rm.model.rma.aspect.VersionRecordAspect" parent="rm.baseBehaviour">
|
||||
<property name="recordableVersionService" ref="RecordableVersionService" />
|
||||
<property name="relationshipService" ref="RelationshipService" />
|
||||
<property name="contentBinDuplicationUtility" ref="contentBinDuplicationUtility"/>
|
||||
</bean>
|
||||
|
||||
<!-- extended version service bean definition -->
|
||||
|
@@ -38,6 +38,7 @@ import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.AbstractDisposableItem;
|
||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.util.ContentBinDuplicationUtility;
|
||||
import org.alfresco.repo.content.ContentServicePolicies;
|
||||
import org.alfresco.repo.copy.CopyBehaviourCallback;
|
||||
import org.alfresco.repo.copy.CopyDetails;
|
||||
@@ -94,6 +95,9 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
/** quickShare service */
|
||||
private QuickShareService quickShareService;
|
||||
|
||||
/** Utility class for duplicating content */
|
||||
private ContentBinDuplicationUtility contentBinDuplicationUtility;
|
||||
|
||||
/** I18N */
|
||||
private static final String MSG_CANNOT_UPDATE_RECORD_CONTENT = "rm.service.update-record-content";
|
||||
|
||||
@@ -130,6 +134,15 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
this.quickShareService = quickShareService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for content duplication utility class
|
||||
* @param contentBinDuplicationUtility ContentBinDuplicationUtility
|
||||
*/
|
||||
public void setContentBinDuplicationUtility(ContentBinDuplicationUtility contentBinDuplicationUtility)
|
||||
{
|
||||
this.contentBinDuplicationUtility = contentBinDuplicationUtility;
|
||||
}
|
||||
|
||||
/**
|
||||
* Behaviour to ensure renditions have the appropriate extended security.
|
||||
*
|
||||
@@ -356,7 +369,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
extendedSecurityService.remove(targetNodeRef);
|
||||
|
||||
//create a new content URL for the copy
|
||||
createNewContentURL(targetNodeRef);
|
||||
contentBinDuplicationUtility.duplicate(targetNodeRef);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,20 +414,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
if (!nodeService.getTargetAssocs(nodeRef, ContentModel.ASSOC_ORIGINAL).isEmpty() ||
|
||||
!nodeService.getSourceAssocs(nodeRef, ContentModel.ASSOC_ORIGINAL).isEmpty())
|
||||
{
|
||||
//disable versioning and auditing
|
||||
behaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE);
|
||||
behaviourFilter.disableBehaviour(ContentModel.ASPECT_VERSIONABLE);
|
||||
try
|
||||
{
|
||||
//create a new content URL for the copy/original node
|
||||
createNewContentURL(nodeRef);
|
||||
}
|
||||
finally
|
||||
{
|
||||
//enable versioning and auditing
|
||||
behaviourFilter.enableBehaviour(ContentModel.ASPECT_AUDITABLE);
|
||||
behaviourFilter.enableBehaviour(ContentModel.ASPECT_VERSIONABLE);
|
||||
}
|
||||
contentBinDuplicationUtility.duplicate(nodeRef);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@@ -33,6 +33,7 @@ import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.relationship.Relationship;
|
||||
import org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.util.ContentBinDuplicationUtility;
|
||||
import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionService;
|
||||
import org.alfresco.repo.node.NodeServicePolicies;
|
||||
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
||||
@@ -64,6 +65,11 @@ public class VersionRecordAspect extends BaseBehaviourBean
|
||||
/** relationship service */
|
||||
private RelationshipService relationshipService;
|
||||
|
||||
/**
|
||||
* Utility class for duplicating content
|
||||
*/
|
||||
private ContentBinDuplicationUtility contentBinDuplicationUtility;
|
||||
|
||||
/**
|
||||
* @param recordableVersionService recordable version service
|
||||
*/
|
||||
@@ -80,6 +86,16 @@ public class VersionRecordAspect extends BaseBehaviourBean
|
||||
this.relationshipService = relationshipService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for content duplication utility class
|
||||
*
|
||||
* @param contentBinDuplicationUtility ContentBinDuplicationUtility
|
||||
*/
|
||||
public void setContentBinDuplicationUtility(ContentBinDuplicationUtility contentBinDuplicationUtility)
|
||||
{
|
||||
this.contentBinDuplicationUtility = contentBinDuplicationUtility;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the record is a version record then delete the associated version entry
|
||||
*
|
||||
@@ -148,7 +164,7 @@ public class VersionRecordAspect extends BaseBehaviourBean
|
||||
if (!nodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_RECORD_ORIGINATING_DETAILS))
|
||||
{
|
||||
//create a new content URL for the version record
|
||||
createNewContentURL(nodeRef);
|
||||
contentBinDuplicationUtility.duplicate(nodeRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.util;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.policy.BehaviourFilter;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
/**
|
||||
* Utility class to duplicate the content of a node without triggering the audit or versioning behaviours
|
||||
* @author Ross Gale
|
||||
* @since 2.7.2
|
||||
*/
|
||||
public class ContentBinDuplicationUtility
|
||||
{
|
||||
|
||||
/**
|
||||
* Behaviour filter
|
||||
*/
|
||||
private BehaviourFilter behaviourFilter;
|
||||
|
||||
/**
|
||||
* Provides methods for accessing and transforming content.
|
||||
*/
|
||||
private ContentService contentService;
|
||||
|
||||
/**
|
||||
* Setter for behaviour filter
|
||||
* @param behaviourFilter BehaviourFilter
|
||||
*/
|
||||
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
|
||||
{
|
||||
this.behaviourFilter = behaviourFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for content service
|
||||
* @param contentService ContentService
|
||||
*/
|
||||
public void setContentService(ContentService contentService)
|
||||
{
|
||||
this.contentService = contentService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Duplicate the content of a node without triggering the audit or versioning behaviours
|
||||
*
|
||||
* @param nodeRef The node with the content to duplicate
|
||||
*/
|
||||
public void duplicate(NodeRef nodeRef)
|
||||
{
|
||||
//disabling versioning and auditing
|
||||
behaviourFilter.disableBehaviour();
|
||||
try
|
||||
{
|
||||
//create a new content URL for the copy/original node
|
||||
updateContentProperty(nodeRef);
|
||||
}
|
||||
finally
|
||||
{
|
||||
//enable versioning and auditing
|
||||
behaviourFilter.enableBehaviour();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to update the content property for the node
|
||||
*
|
||||
* @param nodeRef the node
|
||||
*/
|
||||
private void updateContentProperty(NodeRef nodeRef)
|
||||
{
|
||||
ContentReader reader = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
|
||||
if (reader != null)
|
||||
{
|
||||
ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
|
||||
writer.putContent(reader);
|
||||
}
|
||||
}
|
||||
}
|
@@ -31,7 +31,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
|
||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
|
||||
@@ -39,9 +39,7 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.rendition.RenditionService;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
@@ -554,30 +552,4 @@ public class ServiceBaseImpl implements RecordsManagementModel, ApplicationConte
|
||||
result.add(nodeService.getType(nodeRef));
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to update the given content property for the node
|
||||
*
|
||||
* @param nodeRef the node
|
||||
* @param contentProperty the property to be updated
|
||||
*/
|
||||
protected void updateContentProperty(NodeRef nodeRef, QName contentProperty)
|
||||
{
|
||||
ContentReader reader = contentService.getReader(nodeRef, contentProperty);
|
||||
if (reader != null)
|
||||
{
|
||||
ContentWriter writer = contentService.getWriter(nodeRef, contentProperty, true);
|
||||
writer.putContent(reader);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to create a new content URL for the node
|
||||
*
|
||||
* @param nodeRef the node
|
||||
*/
|
||||
protected void createNewContentURL(NodeRef nodeRef)
|
||||
{
|
||||
updateContentProperty(nodeRef, ContentModel.PROP_CONTENT);
|
||||
}
|
||||
}
|
||||
|
@@ -30,8 +30,6 @@ import static java.util.Arrays.asList;
|
||||
import static java.util.Collections.emptyList;
|
||||
|
||||
import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_RECORD;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -39,7 +37,7 @@ import static org.mockito.MockitoAnnotations.initMocks;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
||||
import org.alfresco.repo.policy.BehaviourFilter;
|
||||
import org.alfresco.module.org_alfresco_module_rm.util.ContentBinDuplicationUtility;
|
||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
@@ -70,8 +68,6 @@ public class RecordAspectUnitTest
|
||||
@Mock
|
||||
private NodeService mockNodeService;
|
||||
@Mock
|
||||
private BehaviourFilter mockBehaviorFilter;
|
||||
@Mock
|
||||
private ContentService mockContentService;
|
||||
@Mock
|
||||
private ContentReader mockContentReader;
|
||||
@@ -79,6 +75,8 @@ public class RecordAspectUnitTest
|
||||
private ContentWriter mockContentWriter;
|
||||
@Mock
|
||||
private ExtendedSecurityService mockExtendedSecurityService;
|
||||
@Mock
|
||||
private ContentBinDuplicationUtility mockContentBinDuplicationUtility;
|
||||
|
||||
@Before
|
||||
public void setUp()
|
||||
@@ -96,7 +94,7 @@ public class RecordAspectUnitTest
|
||||
|
||||
recordAspect.beforeAddAspect(NODE_REF, ASPECT_RECORD);
|
||||
|
||||
verifyBeforeAddAspectMethodsInvocations(1);
|
||||
verify(mockContentBinDuplicationUtility, times(1)).duplicate(NODE_REF);
|
||||
}
|
||||
|
||||
/** Check that the bin is duplicated before adding the aspect if the file is a copy. */
|
||||
@@ -109,24 +107,7 @@ public class RecordAspectUnitTest
|
||||
|
||||
recordAspect.beforeAddAspect(NODE_REF, ASPECT_RECORD);
|
||||
|
||||
verifyBeforeAddAspectMethodsInvocations(1);
|
||||
}
|
||||
|
||||
/** Check that no content bin is created if the file does not have content. */
|
||||
@Test
|
||||
public void testBeforeAddAspectOnFileWithNoContent()
|
||||
{
|
||||
when(mockNodeService.getTargetAssocs(NODE_REF, ContentModel.ASSOC_ORIGINAL)).thenReturn(asList(TARGET_ASSOC_REF));
|
||||
when(mockContentService.getReader(NODE_REF, ContentModel.PROP_CONTENT)).thenReturn(null);
|
||||
|
||||
recordAspect.beforeAddAspect(NODE_REF, ASPECT_RECORD);
|
||||
|
||||
verify(mockBehaviorFilter, times(1)).disableBehaviour(eq(ContentModel.ASPECT_AUDITABLE));
|
||||
verify(mockBehaviorFilter, times(1)).disableBehaviour(eq(ContentModel.ASPECT_VERSIONABLE));
|
||||
verify(mockContentService, times(1)).getReader(NODE_REF, ContentModel.PROP_CONTENT);
|
||||
verify(mockContentService, never()).getWriter(NODE_REF, ContentModel.PROP_CONTENT, true);
|
||||
verify(mockBehaviorFilter, times(1)).enableBehaviour(eq(ContentModel.ASPECT_AUDITABLE));
|
||||
verify(mockBehaviorFilter, times(1)).enableBehaviour(eq(ContentModel.ASPECT_VERSIONABLE));
|
||||
verify(mockContentBinDuplicationUtility, times(1)).duplicate(NODE_REF);
|
||||
}
|
||||
|
||||
/** Check that the bin is not duplicated before adding the aspect if the node has no copies. */
|
||||
@@ -138,7 +119,7 @@ public class RecordAspectUnitTest
|
||||
|
||||
recordAspect.beforeAddAspect(NODE_REF, ASPECT_RECORD);
|
||||
|
||||
verifyBeforeAddAspectMethodsInvocations(0);
|
||||
verify(mockContentBinDuplicationUtility, times(0)).duplicate(NODE_REF);
|
||||
}
|
||||
|
||||
/** Check that the bin is duplicated when copying a record. */
|
||||
@@ -153,24 +134,6 @@ public class RecordAspectUnitTest
|
||||
recordAspect.onCopyComplete(null, NODE_REF, COPY_REF, true, null);
|
||||
|
||||
verify(mockExtendedSecurityService, times(1)).remove(COPY_REF);
|
||||
verify(mockContentService, times(1)).getReader(COPY_REF, ContentModel.PROP_CONTENT);
|
||||
verify(mockContentService, times(1)).getWriter(COPY_REF, ContentModel.PROP_CONTENT, true);
|
||||
verify(mockContentWriter, times(1)).putContent(mockContentReader);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to verify beforeAddAspect methods invocations
|
||||
*
|
||||
* @param wantedNumberOfInvocations wanted number of invocations for each method
|
||||
*/
|
||||
private void verifyBeforeAddAspectMethodsInvocations(int wantedNumberOfInvocations)
|
||||
{
|
||||
verify(mockBehaviorFilter, times(wantedNumberOfInvocations)).disableBehaviour(eq(ContentModel.ASPECT_AUDITABLE));
|
||||
verify(mockBehaviorFilter, times(wantedNumberOfInvocations)).disableBehaviour(eq(ContentModel.ASPECT_VERSIONABLE));
|
||||
verify(mockContentService, times(wantedNumberOfInvocations)).getReader(NODE_REF, ContentModel.PROP_CONTENT);
|
||||
verify(mockContentService, times(wantedNumberOfInvocations)).getWriter(NODE_REF, ContentModel.PROP_CONTENT, true);
|
||||
verify(mockContentWriter, times(wantedNumberOfInvocations)).putContent(mockContentReader);
|
||||
verify(mockBehaviorFilter, times(wantedNumberOfInvocations)).enableBehaviour(eq(ContentModel.ASPECT_AUDITABLE));
|
||||
verify(mockBehaviorFilter, times(wantedNumberOfInvocations)).enableBehaviour(eq(ContentModel.ASPECT_VERSIONABLE));
|
||||
verify(mockContentBinDuplicationUtility, times(1)).duplicate(COPY_REF);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2019 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.util;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.policy.BehaviourFilter;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
import org.alfresco.service.cmr.repository.ContentService;
|
||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* Test class for the ContentBinDuplicationUtility
|
||||
* @author Ross Gale
|
||||
* @since 2.7.2
|
||||
*/
|
||||
public class ContentBinDuplicationUtilityUnitTest
|
||||
{
|
||||
|
||||
@Mock
|
||||
private ContentService contentService;
|
||||
|
||||
@Mock
|
||||
private BehaviourFilter behaviourFilter;
|
||||
|
||||
@Mock
|
||||
private ContentReader contentReader;
|
||||
|
||||
@Mock
|
||||
private ContentWriter contentWriter;
|
||||
|
||||
@InjectMocks
|
||||
private ContentBinDuplicationUtility contentBinDuplicationUtility;
|
||||
|
||||
@Before
|
||||
public void setUp()
|
||||
{
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the requests are made to disable and re-enable the audit and versioning and to update the content bin
|
||||
*/
|
||||
@Test
|
||||
public void testContentUrlIsUpdated()
|
||||
{
|
||||
NodeRef nodeRef = new NodeRef("some://test/noderef");
|
||||
when(contentService.getReader(nodeRef, ContentModel.PROP_CONTENT)).thenReturn(contentReader);
|
||||
when(contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true)).thenReturn(contentWriter);
|
||||
contentBinDuplicationUtility.duplicate(nodeRef);
|
||||
verify(contentWriter, times(1)).putContent(contentReader);
|
||||
checkBehaviours(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test content duplication doesn't happen when node has no content
|
||||
*/
|
||||
@Test
|
||||
public void testDuplicationDoesntHappenWithNoContent()
|
||||
{
|
||||
NodeRef nodeRef = new NodeRef("some://test/noderef");
|
||||
when(contentService.getReader(nodeRef, ContentModel.PROP_CONTENT)).thenReturn(null);
|
||||
contentBinDuplicationUtility.duplicate(nodeRef);
|
||||
verify(contentWriter, times(0)).putContent(contentReader);
|
||||
checkBehaviours(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check that the behaviours are disabled and re-enabled the correct number of times
|
||||
* @param times the times the behaviours should be called
|
||||
*/
|
||||
private void checkBehaviours(int times)
|
||||
{
|
||||
verify(behaviourFilter, times(times)).disableBehaviour();
|
||||
verify(behaviourFilter, times(times)).enableBehaviour();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user