Fix for asynchronous action test. Authentication context was not set for complete asynchronous action execution transaction, therefore failed in commit processing.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2355 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2006-02-13 12:40:31 +00:00
parent ae6bed1eb4
commit 056a3dc9d8
2 changed files with 42 additions and 45 deletions

View File

@@ -673,18 +673,18 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest
final NodeService finalNodeService = this.nodeService;
final NodeRef finalNodeRef = this.nodeRef;
// postAsyncActionTest(
// this.transactionService,
// 100000000,
// 10,
// new AsyncTest()
// {
// public boolean executeTest()
// {
// return (
// finalNodeService.hasAspect(finalNodeRef, ContentModel.ASPECT_VERSIONABLE));
// };
// });
postAsyncActionTest(
this.transactionService,
1000,
10,
new AsyncTest()
{
public boolean executeTest()
{
return (
finalNodeService.hasAspect(finalNodeRef, ContentModel.ASPECT_VERSIONABLE));
};
});
}
@@ -715,19 +715,19 @@ public class ActionServiceImplTest extends BaseAlfrescoSpringTest
final NodeService finalNodeService = this.nodeService;
final NodeRef finalNodeRef = this.nodeRef;
// postAsyncActionTest(
// this.transactionService,
// 1000,
// 10,
// new AsyncTest()
// {
// public boolean executeTest()
// {
// return (
// finalNodeService.hasAspect(finalNodeRef, ContentModel.ASPECT_VERSIONABLE) &&
// finalNodeService.hasAspect(finalNodeRef, ContentModel.ASPECT_LOCKABLE));
// };
// });
postAsyncActionTest(
this.transactionService,
1000,
10,
new AsyncTest()
{
public boolean executeTest()
{
return (
finalNodeService.hasAspect(finalNodeRef, ContentModel.ASPECT_VERSIONABLE) &&
finalNodeService.hasAspect(finalNodeRef, ContentModel.ASPECT_LOCKABLE));
};
});
}
public void xtestAsyncLoadTest()

View File

@@ -28,8 +28,6 @@ import org.alfresco.service.cmr.action.ActionServiceException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.transaction.TransactionService;
import freemarker.log.Logger;
/**
* The asynchronous action execution queue implementation
*
@@ -271,30 +269,29 @@ public class AsynchronousActionExecutionQueueImpl extends ThreadPoolExecutor imp
throw new ActionServiceException("Cannot execute action asynchronously since run as user is 'null'");
}
ActionExecutionWrapper.this.authenticationComponent.setCurrentUser(userName);
try
{
TransactionUtil.executeInNonPropagatingUserTransaction(this.transactionService,
new TransactionUtil.TransactionWork()
{
public Object doWork()
{
ActionExecutionWrapper.this.authenticationComponent
.setCurrentUser(userName);
try
{
ActionExecutionWrapper.this.actionService.executeActionImpl(
ActionExecutionWrapper.this.action,
ActionExecutionWrapper.this.actionedUponNodeRef,
ActionExecutionWrapper.this.checkConditions, true,
ActionExecutionWrapper.this.actionChain);
return null;
}
});
}
finally
{
ActionExecutionWrapper.this.authenticationComponent.clearCurrentSecurityContext();
}
return null;
}
});
}
catch (Throwable exception)
{