[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