[jboss-cvs] JBossAS SVN: r99765 - projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 21 15:02:01 EST 2010
Author: kabir.khan at jboss.com
Date: 2010-01-21 15:02:00 -0500 (Thu, 21 Jan 2010)
New Revision: 99765
Added:
projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java
Modified:
projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/IndexingKernelDependencyResolverFactory.java
projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java
Log:
Simple supply/demand support
Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/IndexingKernelDependencyResolverFactory.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/IndexingKernelDependencyResolverFactory.java 2010-01-21 19:58:18 UTC (rev 99764)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/IndexingKernelDependencyResolverFactory.java 2010-01-21 20:02:00 UTC (rev 99765)
@@ -34,6 +34,7 @@
public IndexingKernelDependencyResolverFactory()
{
addMatcher(new ContextualInjectionDependencyResolverMatcherFactory());
+ addMatcher(new SupplyDemandDependencyResolverMatcherFactory());
}
}
Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java 2010-01-21 19:58:18 UTC (rev 99764)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcher.java 2010-01-21 20:02:00 UTC (rev 99765)
@@ -33,61 +33,33 @@
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.DependencyItem;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
+ * Simple SupplyDemandDependencyResolverMatcher.
+ * This iteration only sees if the controller context has supplies and records which dependencies have demands
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
public class SupplyDemandDependencyResolverMatcher extends AbstractDependencyResolverMatcher
{
- private final ConcurrentMap<Object, ConcurrentMap<ControllerState, List<ControllerContext>>> contextsByDemand = new ConcurrentHashMap<Object, ConcurrentMap<ControllerState, List<ControllerContext>>>();
+ private final ConcurrentMap<ControllerState, List<ControllerContext>> contextsByState = new ConcurrentHashMap<ControllerState, List<ControllerContext>>();
public Set<ControllerContext> getMatchingContexts(ControllerContext context)
{
- Set<ControllerContext> result = null;
- ConcurrentMap<ControllerState, List<ControllerContext>> contextsByDependentState = contextsByDemand.get(context.getName());
- result = addContextsDependentOn(result, context.getState(), contextsByDependentState);
+ if (context instanceof KernelControllerContext == false)
+ return null;
- Set<Object> aliases = context.getAliases();
- if (aliases != null && aliases.size() > 0)
- {
- for (Object alias : aliases)
- {
- contextsByDependentState = contextsByDemand.get(alias);
- result = addContextsDependentOn(result, context.getState(), contextsByDependentState);
- }
- }
- return result;
+ List<ControllerContext> contexts = contextsByState.get(context.getState());
+ if (contexts != null && contexts.size() > 0)
+ return new HashSet<ControllerContext>(contexts);
+
+ return null;
}
- private Set<ControllerContext> addContextsDependentOn(Set<ControllerContext> result, ControllerState dependentState, Map<ControllerState, List<ControllerContext>> contextsByDependentState)
- {
- if (contextsByDependentState != null && !contextsByDependentState.isEmpty())
- {
- List<ControllerContext> contextsForName = contextsByDependentState.get(dependentState);
- if (contextsForName != null && !contextsForName.isEmpty())
- {
- if (result == null)
- result = new HashSet<ControllerContext>();
- result.addAll(contextsForName);
- }
- }
- return result;
- }
-
public void registerDependency(ControllerContext owner, DependencyItem item)
{
- Object name = item.getIDependOn();
-
- ConcurrentMap<ControllerState, List<ControllerContext>> contextsByState = contextsByDemand.get(name);
- if (contextsByState == null)
- {
- contextsByState = new ConcurrentHashMap<ControllerState, List<ControllerContext>>();
- ConcurrentMap<ControllerState, List<ControllerContext>> old = contextsByDemand.putIfAbsent(name, contextsByState);
- if (old != null)
- contextsByState = old;
- }
List<ControllerContext> contexts = contextsByState.get(getDependentState(item));
if (contexts == null)
{
@@ -103,18 +75,10 @@
{
Object name = item.getIDependOn();
- ConcurrentMap<ControllerState, List<ControllerContext>> contextsByState = contextsByDemand.get(name);
- if (contextsByState == null)
- throw new IllegalStateException("Inconsistent state");
- List<ControllerContext> contexts = contextsByState.get(getDependentState(item));
+ List<ControllerContext> contexts = contextsByState.get(name);
if (contexts == null)
throw new IllegalStateException("Inconsistent state");
if (!contexts.remove(owner))
throw new IllegalStateException("Inconsistent state");
}
-
- public boolean hasDependencies(Object name)
- {
- return contextsByDemand.get(name) != null;
- }
}
Added: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java (rev 0)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/SupplyDemandDependencyResolverMatcherFactory.java 2010-01-21 20:02:00 UTC (rev 99765)
@@ -0,0 +1,43 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.kernel.plugins.resolver.indexing;
+
+import org.jboss.beans.metadata.plugins.AbstractDemandMetaData.DemandDependencyItem;
+import org.jboss.dependency.spi.resolver.indexing.DependencyResolverMatcherFactory;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class SupplyDemandDependencyResolverMatcherFactory implements DependencyResolverMatcherFactory<DemandDependencyItem>
+{
+ public SupplyDemandDependencyResolverMatcher createMatcher()
+ {
+ return new SupplyDemandDependencyResolverMatcher();
+ }
+
+ public Class<DemandDependencyItem> getHandled()
+ {
+ return DemandDependencyItem.class;
+ }
+}
More information about the jboss-cvs-commits
mailing list