mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Dictionary optimisation: improve performance when getting sub classes and property defs
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6825 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -299,21 +299,13 @@ public class DictionaryWebService extends AbstractWebService implements Dictiona
|
|||||||
private void getSubClasses(org.alfresco.service.cmr.dictionary.ClassDefinition classDef, Set<org.alfresco.service.cmr.dictionary.ClassDefinition> subClasses, boolean recurse)
|
private void getSubClasses(org.alfresco.service.cmr.dictionary.ClassDefinition classDef, Set<org.alfresco.service.cmr.dictionary.ClassDefinition> subClasses, boolean recurse)
|
||||||
{
|
{
|
||||||
QName superClass = classDef.getName();
|
QName superClass = classDef.getName();
|
||||||
Collection<QName> candidates = (classDef.isAspect()) ? dictionaryService.getAllAspects() : dictionaryService.getAllTypes();
|
|
||||||
|
|
||||||
// Note: this is the brute force way of finding sub-classes
|
Collection<QName> subClassNames = (classDef.isAspect()) ? dictionaryService.getSubAspects(superClass, recurse) : dictionaryService.getSubTypes(superClass, recurse);
|
||||||
// TODO: Add support into Dictionary for retrieving sub-classes
|
|
||||||
for (QName candidate : candidates)
|
for (QName subClass : subClassNames)
|
||||||
{
|
{
|
||||||
if (dictionaryService.isSubClass(candidate, superClass) && !candidate.equals(superClass))
|
org.alfresco.service.cmr.dictionary.ClassDefinition subClassDef = dictionaryService.getClass(subClass);
|
||||||
{
|
|
||||||
org.alfresco.service.cmr.dictionary.ClassDefinition subClassDef = dictionaryService.getClass(candidate);
|
|
||||||
subClasses.add(subClassDef);
|
subClasses.add(subClassDef);
|
||||||
if (recurse)
|
|
||||||
{
|
|
||||||
getSubClasses(subClassDef, subClasses, recurse);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user