Merged V3.1 to HEAD

13484: ETHREEOH-1547: Do not set requiresNew flag and propagate exceptions in BaseDialogBean
   13383: ETHREEOH-1220: Update LDAP-authentication-context to include allowGetEnabled entry to support Share
   13381: ETHREEOH-1181: NTLM authentication periodically fails over CIFS - "Read-Write transaction started within read-only transaction"
   13376: ETHREEOH-279: Friendly error message when cm:filename regular expression constraint is violated
   13364: ETHREEOH-814: Correct character encoding issues in LDAP synchronization
   13353: ETHREEOH-1444: Ability to run Alfresco from unexploded .war file with embedded license
   13328: ETHREEOH-1400: Prevent TLD warnings on Weblogic startup
   13183: Follow up to 13177: Fixes for Weblogic compatibility
   13177: Fixes for Weblogic compatibility
   13109: Build/test fix (to avoid unintentional import via application-context.xml)
   13100: Checkpoint for new DM index check (enterprise-only)


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13525 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Dave Ward
2009-03-10 14:27:09 +00:00
parent 054d6d46b0
commit 1264fca386
14 changed files with 295 additions and 47 deletions

View File

@@ -35,7 +35,9 @@ import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.tenant.TenantService;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport.TxnReadState;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.PermissionService;
@@ -165,7 +167,20 @@ public abstract class AbstractAuthenticationComponent implements AuthenticationC
else
{
SetCurrentUserCallback callback = new SetCurrentUserCallback(userName);
Authentication auth = transactionService.getRetryingTransactionHelper().doInTransaction(callback, transactionService.isReadOnly(), false);
Authentication auth;
// If the repository is read only, we have to settle for a read only transaction. Auto user creation will
// not be possible.
if (transactionService.isReadOnly())
{
auth = transactionService.getRetryingTransactionHelper().doInTransaction(callback, true, false);
}
// Otherwise, we want a writeable transaction, so if the current transaction is read only we set the
// requiresNew flag to true
else
{
auth = transactionService.getRetryingTransactionHelper().doInTransaction(callback, false,
AlfrescoTransactionSupport.getTransactionReadState() == TxnReadState.TXN_READ_ONLY);
}
if ((auth == null) || (callback.ae != null))
{
throw callback.ae;