Merged V2.2 to HEAD

8105: Fix for AR-1828 - multiple users being created from web siteregistration
   8107: Merged V2.1 to v2.2
      8106: Fixed fallout from MetadataExtractors setting properties to thecorrect data type
   8109: Fix for AR-2016
   8119: AR-1778: putContent method in the ContentUtils class fail to upload*.java, *.txt, *.xml
   8120: AR-1895: fix to web service SDK sample
   8125: Test added to prevent regression of AR-1707
   8126: Enhanced exception message when non-marking InputStream is used.
   8131: Merged V2.1 to V2.2
      8129: Merged V1.4 to V2.1:
         8128: Fix AR-2041: NPE checking voids during index tracking
   8140: AR-1762 - correct generation of download servlet URL


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8477 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2008-03-10 13:35:04 +00:00
parent 3e2311888b
commit 316924e8de
5 changed files with 92 additions and 6 deletions

View File

@@ -40,8 +40,10 @@ import net.sf.acegisecurity.providers.encoding.PasswordEncoder;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.tenant.TenantService;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
@@ -68,6 +70,8 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
private DictionaryService dictionaryService;
private SearchService searchService;
private RetryingTransactionHelper retryingTransactionHelper;
private PasswordEncoder passwordEncoder;
@@ -97,6 +101,11 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
{
this.nodeService = nodeService;
}
public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
{
this.retryingTransactionHelper = retryingTransactionHelper;
}
public void setTenantService(TenantService tenantService)
{
@@ -175,7 +184,7 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
for (ResultSetRow row : rs)
{
NodeRef nodeRef = row.getNodeRef();
final NodeRef nodeRef = row.getNodeRef();
if (nodeService.exists(nodeRef))
{
String realUserName = DefaultTypeConverter.INSTANCE.convert(String.class, nodeService.getProperty(
@@ -191,7 +200,26 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
}
else
{
throw new AlfrescoRuntimeException("Found more than one user for "+searchUserName+ " (case sensitive)");
try
{
this.retryingTransactionHelper.doInTransaction(
new RetryingTransactionHelper.RetryingTransactionCallback<Object>()
{
public Object execute()
throws Throwable
{
// Delete the extra user node references
RepositoryAuthenticationDao.this.nodeService.deleteNode(nodeRef);
return null;
}
}, false, true);
}
catch (InvalidNodeRefException exception)
{
// Ignore this exception as the node has already been deleted
}
}
}
}
@@ -205,7 +233,26 @@ public class RepositoryAuthenticationDao implements MutableAuthenticationDao
}
else
{
throw new AlfrescoRuntimeException("Found more than one user for "+searchUserName+ " (case insensitive)");
try
{
this.retryingTransactionHelper.doInTransaction(
new RetryingTransactionHelper.RetryingTransactionCallback<Object>()
{
public Object execute()
throws Throwable
{
// Delete the extra user node references
RepositoryAuthenticationDao.this.nodeService.deleteNode(nodeRef);
return null;
}
}, false, true);
}
catch (InvalidNodeRefException exception)
{
// Ignore this exception as the node has already been deleted
}
}
}
}