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)
|
private List<CompiledModel> getModelsForUri(String uri)
|
||||||
{
|
{
|
||||||
// note: special case, if running as System - e.g. addAuditAspect
|
if (tenantService.isEnabled())
|
||||||
String currentUserName = AuthenticationUtil.getCurrentUserName();
|
|
||||||
|
|
||||||
if ((tenantService.isTenantUser()) ||
|
|
||||||
(tenantService.isTenantName(uri) && (currentUserName != null) && (currentUserName.equals(AuthenticationUtil.getSystemUserName()))))
|
|
||||||
{
|
{
|
||||||
String tenantDomain = null;
|
// note: special case, if running as System - e.g. addAuditAspect
|
||||||
if (currentUserName.equals(AuthenticationUtil.getSystemUserName()))
|
String currentUserName = AuthenticationUtil.getCurrentUserName();
|
||||||
{
|
|
||||||
tenantDomain = tenantService.getDomain(uri);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tenantDomain = tenantService.getCurrentUserDomain();
|
|
||||||
}
|
|
||||||
uri = tenantService.getBaseName(uri, true);
|
|
||||||
|
|
||||||
// get non-tenant models (if any)
|
if (currentUserName != null)
|
||||||
List<CompiledModel> models = getUriToModels("").get(uri);
|
|
||||||
|
|
||||||
List<CompiledModel> filteredModels = new ArrayList<CompiledModel>();
|
|
||||||
if (models != 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 non-tenant models (if any)
|
||||||
|
List<CompiledModel> models = getUriToModels("").get(uri);
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
List<CompiledModel> models = getUriToModels().get(uri);
|
||||||
|
if (models == null)
|
||||||
{
|
{
|
||||||
List<CompiledModel> models = getUriToModels().get(uri);
|
models = Collections.emptyList();
|
||||||
if (models == null)
|
|
||||||
{
|
|
||||||
models = Collections.emptyList();
|
|
||||||
}
|
|
||||||
return models;
|
|
||||||
}
|
}
|
||||||
|
return models;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user