[jboss-cvs] JBossAS SVN: r96682 - in projects/kernel/trunk: dependency/src/main/java/org/jboss/dependency/plugins/helpers and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Nov 22 08:47:01 EST 2009


Author: alesj
Date: 2009-11-22 08:47:00 -0500 (Sun, 22 Nov 2009)
New Revision: 96682

Modified:
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ContextTracker.java
   projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java
Log:
[JBKERNEL-61]; additional context2class tracker methods.


Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2009-11-22 12:30:32 UTC (rev 96681)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2009-11-22 13:47:00 UTC (rev 96682)
@@ -2605,6 +2605,34 @@
       prepareToTraverse(context, true);
    }
 
+   public void registerInstantiatedContext(ControllerContext context, Class<?>... classes)
+   {
+      handleInstantiatedContext(context, true, classes);
+   }
+
+   /**
+    * Register / unregister contexts against explicit classes.
+    *
+    * @param context the context
+    * @param addition whether this is an addition
+    * @param classes the exposed classes
+    */
+   protected void handleInstantiatedContext(ControllerContext context, boolean addition, Class<?>... classes)
+   {
+      if (classes != null && classes.length > 0)
+      {
+         boolean trace = log.isTraceEnabled();
+
+         for (Class<?> clazz : classes)
+            handleContext(context, clazz, addition, trace);
+      }
+   }
+
+   public void unregisterInstantiatedContext(ControllerContext context, Class<?>... classes)
+   {
+      handleInstantiatedContext(context, false, classes);
+   }
+
    public void removeInstantiatedContext(ControllerContext context)
    {
       prepareToTraverse(context, false);
@@ -2615,11 +2643,18 @@
       lockWrite();
       try
       {
-         Object target = addition ? context.getTarget() : context.ungetTarget();
-         if (target != null)
+         Object target = context.getTarget();
+         try
          {
-            traverseBean(context, target.getClass(), addition, log.isTraceEnabled());
+            if (target != null)
+            {
+               traverseBean(context, target.getClass(), addition, log.isTraceEnabled());
+            }
          }
+         finally
+         {
+            context.ungetTarget();
+         }
       }
       finally
       {
@@ -2642,6 +2677,29 @@
       {
          return;
       }
+
+      handleContext(context, clazz, addition, trace);
+
+      // traverse superclass
+      traverseBean(context, clazz.getSuperclass(), addition, trace);
+      Class<?>[] interfaces = clazz.getInterfaces();
+      // traverse interfaces
+      for(Class<?> intface : interfaces)
+      {
+         traverseBean(context, intface, addition, trace);
+      }
+   }
+
+   /**
+    * Map or remove context against class.
+    *
+    * @param context the context
+    * @param clazz the class
+    * @param addition whether this is an addition
+    * @param trace trace is enabled
+    */
+   protected void handleContext(ControllerContext context, Class<?> clazz, boolean addition, boolean trace)
+   {
       ClassContext classContext = contextsByClass.get(clazz);
       if (addition)
       {
@@ -2672,14 +2730,6 @@
             classContext.contexts.remove(context);
          }
       }
-      // traverse superclass
-      traverseBean(context, clazz.getSuperclass(), addition, trace);
-      Class<?>[] interfaces = clazz.getInterfaces();
-      // traverse interfaces
-      for(Class<?> intface : interfaces)
-      {
-         traverseBean(context, intface, addition, trace);
-      }
    }
 
    private static class ClassContext

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java	2009-11-22 12:30:32 UTC (rev 96681)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/helpers/StatelessController.java	2009-11-22 13:47:00 UTC (rev 96682)
@@ -114,6 +114,16 @@
    }
 
    @Override
+   public void registerInstantiatedContext(ControllerContext context, Class<?>... classes)
+   {
+   }
+
+   @Override
+   public void unregisterInstantiatedContext(ControllerContext context, Class<?>... classes)
+   {
+   }
+
+   @Override
    public void removeInstantiatedContext(ControllerContext context)
    {
    }

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ContextTracker.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ContextTracker.java	2009-11-22 12:30:32 UTC (rev 96681)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ContextTracker.java	2009-11-22 13:47:00 UTC (rev 96682)
@@ -66,7 +66,28 @@
    void addInstantiatedContext(ControllerContext context);
 
    /**
+    * Add instantiated context into the map used by {@link #getContextByClass(Class)}.
+    * Only map against explicit classes.
+    *
+    * Note: it is up to the caller to make sure the context's target implements
+    * all of the exposed classes.
+    *
+    * @param context the context
+    * @param classes the classes to expose
+    */
+   void registerInstantiatedContext(ControllerContext context, Class<?>... classes);
+
+   /**
     * Remove instantiated context from the map used by {@link #getContextByClass(Class)}.
+    * Only remove explicit classes.
+    *
+    * @param context the context
+    * @param classes the classes to expose
+    */
+   void unregisterInstantiatedContext(ControllerContext context, Class<?>... classes);
+
+   /**
+    * Remove instantiated context from the map used by {@link #getContextByClass(Class)}.
     * Look at all target's superclasses and interfaces.
     *
     * @param context the context

Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java	2009-11-22 12:30:32 UTC (rev 96681)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java	2009-11-22 13:47:00 UTC (rev 96682)
@@ -119,6 +119,14 @@
    {
    }
 
+   public void registerInstantiatedContext(ControllerContext context, Class<?>... classes)
+   {
+   }
+
+   public void unregisterInstantiatedContext(ControllerContext context, Class<?>... classes)
+   {
+   }
+
    public void addSupplies(KernelControllerContext context)
    {
    }




More information about the jboss-cvs-commits mailing list