[jboss-cvs] JBossAS SVN: r96597 - in projects/kernel/trunk: dependency/src/main/java/org/jboss/dependency/spi and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 19 16:20:10 EST 2009


Author: alesj
Date: 2009-11-19 16:20:09 -0500 (Thu, 19 Nov 2009)
New Revision: 96597

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/AbstractControllerContext.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AttributeCallbackItem.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/SingleCallbackItem.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ControllerContext.java
   projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceInjectionValueMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/ThisValueMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/CollectionCallbackItem.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java
Log:
[JBKERNEL-61]; apply more ungetTarget.


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-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -1720,7 +1720,7 @@
             Set<CallbackItem<?>> existingCallbacks = new HashSet<CallbackItem<?>>();
             existingCallbacks.addAll(getCallbacks(context.getName(), isInstallPhase));
             // match by classes
-            Collection<Class<?>> classes = getClassesImplemented(context.getTarget());
+            Collection<Class<?>> classes = getClassesImplemented(context);
             if (classes != null && classes.isEmpty() == false)
             {
                for (Class<?> clazz : classes)
@@ -1816,9 +1816,28 @@
    /**
     * Get implemented classes.
     *
-    * @param target target value / bean
+    * @param context the context
     * @return collection of implementing classes by target
     */
+   protected Collection<Class<?>> getClassesImplemented(ControllerContext context)
+   {
+      Object target = context.getTarget();
+      try
+      {
+         return getClassesImplemented(target);
+      }
+      finally
+      {
+         context.ungetTarget();
+      }
+   }
+
+   /**
+    * Get implemented classes.
+    *
+    * @param target the target
+    * @return collection of implementing classes by target
+    */
    protected Collection<Class<?>> getClassesImplemented(Object target)
    {
       if (target == null)

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractControllerContext.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractControllerContext.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractControllerContext.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -311,7 +311,7 @@
 
    public Object ungetTarget()
    {
-      return null;
+      return target;
    }
 
    /**

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AttributeCallbackItem.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AttributeCallbackItem.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AttributeCallbackItem.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -50,6 +50,7 @@
 
    protected void changeCallback(ControllerContext context, boolean isInstallPhase) throws Throwable
    {
-      execute(context.getTarget());
+      Object target = isInstallPhase ? context.getTarget() : context.ungetTarget();
+      execute(target);
    }
 }

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/SingleCallbackItem.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/SingleCallbackItem.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/SingleCallbackItem.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -59,7 +59,7 @@
 
    protected void changeCallback(ControllerContext context, boolean isInstallPhase) throws Throwable
    {
-      Object target = context.getTarget();
+      Object target = isInstallPhase ? context.getTarget() : context.ungetTarget();
       if (target != null)
       {
          if (signature == null)

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ControllerContext.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ControllerContext.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ControllerContext.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -69,17 +69,26 @@
    /**
     * Get the target of the context. This will normally be the bean instance, available after 
     * the context reaches the {@link ControllerState#INSTANTIATED} state. 
-    * 
+    *
+    * Note: invoke this only with matching ungetTarget!
+    *
     * @return the target
     */
    Object getTarget();
 
    /**
     * Unget context's target.
+    *
     * Some component models track target/service usage,
     * hence we need an explicit unget call to release our usage.
     *
-    * @return mostly null, unless some other value should be used and unconfigure
+    * We still need to return the right target,
+    * but it should be the job of the framework not to
+    * allow "abuse" of this released target.
+    *
+    * e.g. uncallback would re-use the target to do proper cleanup
+    *
+    * @return the target, but with release invoked
     */
    Object ungetTarget();
 

Modified: projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceInjectionValueMetaData.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceInjectionValueMetaData.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceInjectionValueMetaData.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -213,7 +213,10 @@
 
          ControllerContext context = controller.getContext(dependency, state);
          if (context != null)
-            return context.ungetTarget();
+         {
+            context.ungetTarget();
+            return null;
+         }
       }
       return super.ungetValue(valueContext);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -321,7 +321,10 @@
             state = ControllerState.INSTALLED;
          ControllerContext lookup = getControllerContext(getUnderlyingValue(), state);
          if (lookup != null)
-            return lookup.ungetTarget();
+         {
+            lookup.ungetTarget();
+            return null;
+         }
       }
 
       return super.ungetValue(info, cl);

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -208,7 +208,10 @@
       {
          ControllerContext lookup = getControllerContext(info.getType(), ControllerState.INSTALLED);
          if (lookup != null)
-            return lookup.ungetTarget();
+         {
+            lookup.ungetTarget();
+            return null;
+         }
       }
       return super.ungetValue(info, cl);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/ThisValueMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/ThisValueMetaData.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/ThisValueMetaData.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -71,7 +71,7 @@
       Controller controller = context.getController();
       ControllerContext context = controller.getContext(getUnderlyingValue(), ControllerState.INSTANTIATED);
       if (context != null)
-         return context.ungetTarget();
+         context.ungetTarget();
 
       return super.ungetValue(info, cl);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/CollectionCallbackItem.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/CollectionCallbackItem.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/CollectionCallbackItem.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -138,6 +138,6 @@
     */
    protected void removeUninstallingContext(T holder, ControllerContext context)
    {
-      holder.remove(context.getTarget());
+      holder.remove(context.ungetTarget());
    }
 }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java	2009-11-19 21:05:06 UTC (rev 96596)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java	2009-11-19 21:20:09 UTC (rev 96597)
@@ -94,7 +94,7 @@
 
    public Object ungetTarget()
    {
-      return null;
+      return target;
    }
 
 // @todo SORT THIS OUT, i.e. dependency that doesn't go through controller




More information about the jboss-cvs-commits mailing list