mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Minor performance tweak (for single-tenant mode) as per KR's profiling test
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6729 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -337,69 +337,73 @@ public class DictionaryDAOImpl implements DictionaryDAO
|
||||
*/
|
||||
private List<CompiledModel> getModelsForUri(String uri)
|
||||
{
|
||||
// note: special case, if running as System - e.g. addAuditAspect
|
||||
String currentUserName = AuthenticationUtil.getCurrentUserName();
|
||||
|
||||
if ((tenantService.isTenantUser()) ||
|
||||
(tenantService.isTenantName(uri) && (currentUserName != null) && (currentUserName.equals(AuthenticationUtil.getSystemUserName()))))
|
||||
if (tenantService.isEnabled())
|
||||
{
|
||||
String tenantDomain = null;
|
||||
if (currentUserName.equals(AuthenticationUtil.getSystemUserName()))
|
||||
{
|
||||
tenantDomain = tenantService.getDomain(uri);
|
||||
}
|
||||
else
|
||||
{
|
||||
tenantDomain = tenantService.getCurrentUserDomain();
|
||||
}
|
||||
uri = tenantService.getBaseName(uri, true);
|
||||
// note: special case, if running as System - e.g. addAuditAspect
|
||||
String currentUserName = AuthenticationUtil.getCurrentUserName();
|
||||
|
||||
// get non-tenant models (if any)
|
||||
List<CompiledModel> models = getUriToModels("").get(uri);
|
||||
|
||||
List<CompiledModel> filteredModels = new ArrayList<CompiledModel>();
|
||||
if (models != null)
|
||||
if (currentUserName != null)
|
||||
{
|
||||
filteredModels.addAll(models);
|
||||
}
|
||||
if ((tenantService.isTenantUser(currentUserName)) ||
|
||||
(currentUserName.equals(AuthenticationUtil.getSystemUserName()) && tenantService.isTenantName(uri)))
|
||||
{
|
||||
String tenantDomain = null;
|
||||
if (currentUserName.equals(AuthenticationUtil.getSystemUserName()))
|
||||
{
|
||||
tenantDomain = tenantService.getDomain(uri);
|
||||
}
|
||||
else
|
||||
{
|
||||
tenantDomain = tenantService.getCurrentUserDomain();
|
||||
}
|
||||
uri = tenantService.getBaseName(uri, true);
|
||||
|
||||
// get tenant models (if any)
|
||||
List<CompiledModel> tenantModels = getUriToModels(tenantDomain).get(uri);
|
||||
if (tenantModels != null)
|
||||
{
|
||||
if (models != null)
|
||||
{
|
||||
// check to see if tenant model overrides a non-tenant model
|
||||
for (CompiledModel tenantModel : tenantModels)
|
||||
{
|
||||
for (CompiledModel model : models)
|
||||
{
|
||||
if (tenantModel.getM2Model().getName().equals(model.getM2Model().getName()))
|
||||
{
|
||||
filteredModels.remove(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
filteredModels.addAll(tenantModels);
|
||||
models = filteredModels;
|
||||
}
|
||||
// get non-tenant models (if any)
|
||||
List<CompiledModel> models = getUriToModels("").get(uri);
|
||||
|
||||
if (models == null)
|
||||
{
|
||||
models = Collections.emptyList();
|
||||
List<CompiledModel> filteredModels = new ArrayList<CompiledModel>();
|
||||
if (models != null)
|
||||
{
|
||||
filteredModels.addAll(models);
|
||||
}
|
||||
|
||||
// get tenant models (if any)
|
||||
List<CompiledModel> tenantModels = getUriToModels(tenantDomain).get(uri);
|
||||
if (tenantModels != null)
|
||||
{
|
||||
if (models != null)
|
||||
{
|
||||
// check to see if tenant model overrides a non-tenant model
|
||||
for (CompiledModel tenantModel : tenantModels)
|
||||
{
|
||||
for (CompiledModel model : models)
|
||||
{
|
||||
if (tenantModel.getM2Model().getName().equals(model.getM2Model().getName()))
|
||||
{
|
||||
filteredModels.remove(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
filteredModels.addAll(tenantModels);
|
||||
models = filteredModels;
|
||||
}
|
||||
|
||||
if (models == null)
|
||||
{
|
||||
models = Collections.emptyList();
|
||||
}
|
||||
return models;
|
||||
}
|
||||
}
|
||||
return models;
|
||||
}
|
||||
else
|
||||
|
||||
List<CompiledModel> models = getUriToModels().get(uri);
|
||||
if (models == null)
|
||||
{
|
||||
List<CompiledModel> models = getUriToModels().get(uri);
|
||||
if (models == null)
|
||||
{
|
||||
models = Collections.emptyList();
|
||||
}
|
||||
return models;
|
||||
models = Collections.emptyList();
|
||||
}
|
||||
return models;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user