[jboss-cvs] JBossAS SVN: r75680 - projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 11 07:06:04 EDT 2008
Author: alesj
Date: 2008-07-11 07:06:04 -0400 (Fri, 11 Jul 2008)
New Revision: 75680
Modified:
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/ScopeKeySearchInfo.java
Log:
Optimize search - only check related controllers.
Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/ScopeKeySearchInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/ScopeKeySearchInfo.java 2008-07-11 11:00:53 UTC (rev 75679)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/ScopeKeySearchInfo.java 2008-07-11 11:06:04 UTC (rev 75680)
@@ -96,19 +96,45 @@
*/
private AbstractController findMatchingScopedController(AbstractController current)
{
+ boolean related = true; // by default it's related
+
if (current instanceof ScopedController)
{
ScopedController scopedController = (ScopedController)current;
- if (scopeKey.equals(scopedController.getScopeKey()))
- return current;
+ ScopeKey key = scopedController.getScopeKey();
+ // see if this is even related, so that we don't go fwd for nothing
+ if (key != null)
+ {
+ // exact match
+ if (scopeKey.equals(key))
+ return current;
+
+ related = false; // we have key, should prove that it's related
+ ScopeKey ck = scopeKey;
+ int keySize = key.getScopes().size();
+ int ckSize = ck.getScopes().size();
+ while(ck != null && keySize < ckSize)
+ {
+ if (key.isParent(ck))
+ {
+ related = true;
+ break;
+ }
+ ck = ck.getParent();
+ ckSize--;
+ }
+ }
}
- Set<AbstractController> children = current.getControllers();
- for (AbstractController child : children)
+ if (related)
{
- AbstractController found = findMatchingScopedController(child);
- if (found != null)
- return found;
+ Set<AbstractController> children = current.getControllers();
+ for (AbstractController child : children)
+ {
+ AbstractController found = findMatchingScopedController(child);
+ if (found != null)
+ return found;
+ }
}
return null;
More information about the jboss-cvs-commits
mailing list