From b56284a70ac6e5a4c121206acbcf3919a3c7b57b Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Wed, 19 Sep 2007 11:47:29 +0000 Subject: [PATCH] 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 --- .../dictionary/DictionaryWebService.java | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java b/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java index 89ef95b41c..1859917999 100644 --- a/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java +++ b/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java @@ -299,21 +299,13 @@ public class DictionaryWebService extends AbstractWebService implements Dictiona private void getSubClasses(org.alfresco.service.cmr.dictionary.ClassDefinition classDef, Set subClasses, boolean recurse) { QName superClass = classDef.getName(); - Collection candidates = (classDef.isAspect()) ? dictionaryService.getAllAspects() : dictionaryService.getAllTypes(); - - // Note: this is the brute force way of finding sub-classes - // TODO: Add support into Dictionary for retrieving sub-classes - for (QName candidate : candidates) + + Collection subClassNames = (classDef.isAspect()) ? dictionaryService.getSubAspects(superClass, recurse) : dictionaryService.getSubTypes(superClass, recurse); + + for (QName subClass : subClassNames) { - if (dictionaryService.isSubClass(candidate, superClass) && !candidate.equals(superClass)) - { - org.alfresco.service.cmr.dictionary.ClassDefinition subClassDef = dictionaryService.getClass(candidate); - subClasses.add(subClassDef); - if (recurse) - { - getSubClasses(subClassDef, subClasses, recurse); - } - } + org.alfresco.service.cmr.dictionary.ClassDefinition subClassDef = dictionaryService.getClass(subClass); + subClasses.add(subClassDef); } }