[Jboss-cvs] JBossAS SVN: r55906 - projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 14 12:53:54 EDT 2006


Author: alesj
Date: 2006-08-14 12:53:52 -0400 (Mon, 14 Aug 2006)
New Revision: 55906

Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
Log:
Added info about context usage with contextual injection.

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java	2006-08-14 16:25:32 UTC (rev 55905)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java	2006-08-14 16:53:52 UTC (rev 55906)
@@ -61,7 +61,7 @@
    protected Map<Object, List<KernelControllerContext>> suppliers = CollectionsFactory.createConcurrentReaderMap();
 
    /** The contexts by class Map<Class, Set<ControllerContext>> */
-   protected Map<Class, Set<ControllerContext>> contextsByClass = CollectionsFactory.createConcurrentReaderMap();
+   protected Map<Class, ClassContext> contextsByClass = CollectionsFactory.createConcurrentReaderMap();
 
    /**
     * Create an abstract kernel controller
@@ -217,7 +217,13 @@
       lockRead();
       try
       {
-         return contextsByClass.get(clazz);
+         ClassContext classContext = contextsByClass.get(clazz);
+         if (classContext != null)
+         {
+            classContext.used = true;
+            return classContext.contexts;
+         }
+         return null;
       }
       finally
       {
@@ -273,33 +279,34 @@
       {
          return;
       }
-      Set<ControllerContext> beans = contextsByClass.get(clazz);
+      ClassContext classContext = contextsByClass.get(clazz);
       if (addition)
       {
-         if (beans == null)
+         if (classContext == null)
          {
-            beans = new HashSet<ControllerContext>();
-            contextsByClass.put(clazz, beans);
+            classContext = new ClassContext();
+            classContext.contexts = new HashSet<ControllerContext>();
+            contextsByClass.put(clazz, classContext);
          }
+         else if (classContext.used)
+         {
+            log.warn("Additional matching bean - contextual injection already used for class: " + clazz);
+         }
          if (trace)
          {
             log.trace("Mapping contex " + context + " to class: " + clazz);
          }
-         beans.add(context);
+         classContext.contexts.add(context);
       }
       else
       {
-         if (beans != null)
+         if (classContext != null)
          {
             if (trace)
             {
                log.trace("Removing contex " + context + " to class: " + clazz);
             }
-            beans.remove(context);
-            if (beans.isEmpty())
-            {
-               contextsByClass.remove(clazz);
-            }
+            classContext.contexts.remove(context);
          }
       }
       // traverse superclass
@@ -312,4 +319,10 @@
       }
    }
 
+   private class ClassContext
+   {
+      private boolean used;
+      private Set<ControllerContext> contexts;
+   }
+
 }




More information about the jboss-cvs-commits mailing list