Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)

63670: Merged DEV to HEAD-BUG-FIX (4.3)
      63618: Fixed ACE-762: BM-0012: NodeLockedException not handled by CMIS
             - Refactored interceptor to handle previous TODO: Dig into exceptions to find deep causal issues of interest
             - Added unit test
             - Translate lock-related Alfresco exception into CMIS exception
      63619: Further testing for ACE-762: BM-0012: NodeLockedException not handled by CMIS
             - Extended test to ensure that locked nodes generate the correct CMIS exception
      63630: Added test for ACE-762 and cleaned up pointless warnings


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@64309 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2014-03-14 16:38:05 +00:00
parent cab496539d
commit 5e7c96fe91

View File

@@ -36,6 +36,7 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.tenant.TenantService;
import org.alfresco.repo.tenant.TenantUtil;
import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.rest.api.tests.RepoService.SiteInformation;
import org.alfresco.rest.api.tests.RepoService.TestNetwork;
import org.alfresco.rest.api.tests.RepoService.TestPerson;
@@ -56,6 +57,8 @@ import org.alfresco.rest.api.tests.client.data.NodeRating.Aggregate;
import org.alfresco.rest.api.tests.client.data.Person;
import org.alfresco.rest.api.tests.client.data.SiteRole;
import org.alfresco.rest.api.tests.client.data.Tag;
import org.alfresco.service.cmr.lock.LockService;
import org.alfresco.service.cmr.lock.LockType;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -81,6 +84,7 @@ import org.apache.chemistry.opencmis.commons.data.ContentStream;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.io.IOUtils;
@@ -91,6 +95,7 @@ import org.springframework.context.ApplicationContext;
public class TestCMIS extends EnterpriseTestApi
{
private DictionaryDAO dictionaryDAO;
private LockService lockService;
private TenantService tenantService;
private CMISStrictDictionaryService cmisDictionary;
private QNameFilter cmisTypeExclusions;
@@ -100,6 +105,7 @@ public class TestCMIS extends EnterpriseTestApi
{
ApplicationContext ctx = getTestFixture().getApplicationContext();
this.dictionaryDAO = (DictionaryDAO)ctx.getBean("dictionaryDAO");
this.lockService = (LockService) ctx.getBean("lockService");
this.tenantService = (TenantService)ctx.getBean("tenantService");
this.cmisDictionary = (CMISStrictDictionaryService)ctx.getBean("OpenCMISDictionaryService");
this.cmisTypeExclusions = (QNameFilter)ctx.getBean("cmisTypeExclusions");
@@ -558,7 +564,8 @@ public class TestCMIS extends EnterpriseTestApi
/**
* Tests CMIS and non-CMIS public api interactions
*/
@Test
@SuppressWarnings("deprecation")
@Test
public void testScenario1() throws Exception
{
final TestNetwork network1 = getTestFixture().getRandomNetwork();
@@ -600,8 +607,41 @@ public class TestCMIS extends EnterpriseTestApi
Comment c = commentsProxy.createNodeComment(doc.getId(), new Comment("comment title 1", "comment 1"));
System.out.println("Comment = " + c);
// Now lock the document
String nodeRefStr = (String) doc.getPropertyValue("alfcmis:nodeRef");
final NodeRef nodeRef = new NodeRef(nodeRefStr);
final TenantRunAsWork<Void> runAsWork = new TenantRunAsWork<Void>()
{
@Override
public Void doWork() throws Exception
{
lockService.lock(nodeRef, LockType.WRITE_LOCK);
return null;
}
};
RetryingTransactionCallback<Void> txnWork = new RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
TenantUtil.runAsUserTenant(runAsWork, "bob", network1.getId());
return null;
}
};
transactionHelper.doInTransaction(txnWork);
// Now attempt to update the document's metadata
try
{
doc.delete();
}
catch (CmisUpdateConflictException e)
{
// Expected: ACE-762 BM-0012: NodeLockedException not handled by CMIS
}
}
//@Test
public void testInvalidMethods() throws Exception
{
@@ -1289,7 +1329,8 @@ public class TestCMIS extends EnterpriseTestApi
doc1.setContentStream(fileContent, true);
AlfrescoDocument doc2 = (AlfrescoDocument)doc1.getObjectOfLatestVersion(false);
String versionLabel2 = doc2.getVersionLabel();
@SuppressWarnings("unused")
String versionLabel2 = doc2.getVersionLabel();
assertTrue(Double.parseDouble(versionLabel) < Double.parseDouble(versionLabel1));