[jboss-cvs] JBossAS SVN: r99808 - 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
Fri Jan 22 10:45:10 EST 2010
Author: kabir.khan at jboss.com
Date: 2010-01-22 10:45:10 -0500 (Fri, 22 Jan 2010)
New Revision: 99808
Modified:
projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java
projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/IndexingKernelDependencyResolverFactory.java
Log:
Callback dependency item support
Modified: projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java
===================================================================
--- projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java 2010-01-22 15:30:37 UTC (rev 99807)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/ContextualInjectionDependencyResolverMatcher.java 2010-01-22 15:45:10 UTC (rev 99808)
@@ -21,18 +21,7 @@
*/
package org.jboss.kernel.plugins.resolver.indexing;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.jboss.beans.metadata.plugins.ContextualInjectionDependencyItem;
-import org.jboss.dependency.plugins.AbstractDependencyItem;
-import org.jboss.dependency.plugins.resolver.indexing.AbstractDependencyResolverMatcher;
-import org.jboss.dependency.spi.ControllerContext;
-import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.DependencyItem;
import org.jboss.kernel.plugins.dependency.QualifierKey;
@@ -41,101 +30,20 @@
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
-public class ContextualInjectionDependencyResolverMatcher extends AbstractDependencyResolverMatcher
+public class ContextualInjectionDependencyResolverMatcher extends AbstractClassDependencyResolverMatcher<ContextualInjectionDependencyItem>
{
- private final ConcurrentMap<ControllerState, ConcurrentMap<Class<?>, List<ControllerContext>>> contextsByState = new ConcurrentHashMap<ControllerState, ConcurrentMap<Class<?>, List<ControllerContext>>>();
-
- public Set<ControllerContext> getMatchingContexts(ControllerContext context)
+ @Override
+ protected Class<?> getDependencyClass(DependencyItem item)
{
- ConcurrentMap<Class<?>, List<ControllerContext>> contextsByClass = contextsByState.get(context.getState());
- if (contextsByClass != null)
- {
- if (context.getTarget() == null)
- throw new IllegalStateException("Null target");
- return addMatchingContexts(null, context.getTarget().getClass(), contextsByClass);
- }
- return null;
- }
-
- private Set<ControllerContext> addMatchingContexts(Set<ControllerContext> result, Class<?> clazz, ConcurrentMap<Class<?>, List<ControllerContext>> contextsByClass)
- {
- if (clazz != null)
- {
- List<ControllerContext> contexts = contextsByClass.get(clazz);
- if (contexts != null)
- {
- if (result == null)
- result = new HashSet<ControllerContext>();
- result.addAll(contexts);
- }
-
- result = addMatchingContexts(result, clazz.getSuperclass(), contextsByClass);
- Class<?>[] interfaces = clazz.getInterfaces();
- if (interfaces != null)
- {
- for (int i = 0 ; i < interfaces.length ; i++)
- {
- result = addMatchingContexts(result, interfaces[i], contextsByClass);
- }
- }
- }
- return result;
- }
-
- public void registerDependency(ControllerContext owner, DependencyItem item)
- {
- if (owner == null)
- throw new IllegalStateException("Null owner");
- if (item instanceof ContextualInjectionDependencyItem == false)
- throw new IllegalStateException("item is not an instance of ContextualInjectionDependencyItem");
-
- if (owner.getController().getStates().isBeforeState(getDependentState(item), ControllerState.INSTALLED))
- throw new IllegalArgumentException(item + " has a dependent state of " + getDependentState(item) + " which is before the first allowed: " + ControllerState.INSTALLED);
-
- Class<?> clazz = getDependencyClass(item);
-
- ConcurrentMap<Class<?>, List<ControllerContext>> contextsByClass = contextsByState.get(getDependentState(item));
- if (contextsByClass == null)
- {
- contextsByClass = new ConcurrentHashMap<Class<?>, List<ControllerContext>>();
- ConcurrentMap<Class<?>, List<ControllerContext>> old = contextsByState.putIfAbsent(getDependentState(item), contextsByClass);
- if (old != null)
- contextsByClass = old;
- }
- List<ControllerContext> contexts = contextsByClass.get(clazz);
- if (contexts == null)
- {
- contexts = new CopyOnWriteArrayList<ControllerContext>();
- List<ControllerContext> old = contextsByClass.putIfAbsent(clazz, contexts);
- if (old != null)
- contexts = old;
- }
- contexts.add(owner);
-
- }
-
- public void unregisterDependency(ControllerContext owner, DependencyItem item)
- {
- if (owner == null)
- throw new IllegalStateException("Null owner");
- if (item instanceof AbstractDependencyItem == false)
- throw new IllegalStateException("item is not an instance of AbstractDependencyItem");
-
- ConcurrentMap<Class<?>, List<ControllerContext>> contextsByClass = contextsByState.get(getDependentState(item));
- if (contextsByClass == null)
- handleCleanUpError(item);
- List<ControllerContext> contexts = contextsByClass.get(getDependencyClass(item));
- if (contexts == null)
- handleCleanUpError(item);
- if (!contexts.remove(owner))
- handleCleanUpError(item);
- }
-
- private Class<?> getDependencyClass(DependencyItem item)
- {
Object dependency = item.getIDependOn();
if (dependency instanceof QualifierKey == false && dependency instanceof Class<?> == false)
throw new IllegalStateException("Dependency is not a QualifierKey or a class: '" + dependency + "' in " + item);
return dependency instanceof QualifierKey ? ((QualifierKey)dependency).getType() : (Class<?>)dependency;
}
+
+ @Override
+ protected Class<ContextualInjectionDependencyItem> getDependencyItemClass()
+ {
+ return ContextualInjectionDependencyItem.class;
+ }
}
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-22 15:30:37 UTC (rev 99807)
+++ projects/kernel/branches/resolver/kernel/src/main/java/org/jboss/kernel/plugins/resolver/indexing/IndexingKernelDependencyResolverFactory.java 2010-01-22 15:45:10 UTC (rev 99808)
@@ -35,6 +35,7 @@
{
addMatcher(new ContextualInjectionDependencyResolverMatcherFactory());
addMatcher(new SupplyDemandDependencyResolverMatcherFactory());
+ addMatcher(new CallbackDependencyResolverMatcherFactory());
}
}
More information about the jboss-cvs-commits
mailing list