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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 18 08:00:02 EST 2009


Author: alesj
Date: 2009-11-18 07:59:59 -0500 (Wed, 18 Nov 2009)
New Revision: 96487

Modified:
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractControllerContext.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ControllerContext.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/AttributeDispatchContext.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java
   projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/AbstractMetaDataVisitorNode.java
   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/ServiceJBXBValueMetaData.java
   projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryParameterMetaData.java
   projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryValueMetaData.java
   projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueMetaData.java
   projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/microcontainer/ServiceControllerContext.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/AbstractInstallMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.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/config/AbstractKernelConfigurator.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/Configurator.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/LifecycleAction.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PropertyDispatchWrapper.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java
   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/BeanKernelRegistryEntry.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
Log:
[JBKERNEL-61]; more re-write to unget contexts. Make getTarget lazy as possible.


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-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractControllerContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -309,6 +309,11 @@
       return target;
    }
 
+   public Object ungetTarget()
+   {
+      return null;
+   }
+
    /**
     * Set the target
     *

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-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/ControllerContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -33,7 +33,7 @@
  * 
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision$
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  */
 public interface ControllerContext extends JBossInterface
 {
@@ -73,8 +73,17 @@
     * @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
+    */
+   Object ungetTarget();
+
+   /**
     * Get the controller that manages this controller context
     * 
     * @return the controller

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/AttributeDispatchContext.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/AttributeDispatchContext.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/AttributeDispatchContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -21,6 +21,8 @@
 */
 package org.jboss.dependency.spi.dispatch;
 
+import org.jboss.beans.info.spi.BeanInfo;
+
 /**
  * The API similar to the DynamicMBean API
  * where there are methods to get/set Properties/Attributes.
@@ -51,4 +53,15 @@
     * @throws Throwable for any error
     */
    void set(String name, Object value) throws Throwable;
+
+   /**
+    * Get bean info.
+    * This can be null if cannot be determined.
+    *
+    * This is used to determine property access.
+    * This way we don't need to access target.
+    *
+    * @return the bean info
+    */
+   BeanInfo getBeanInfo();
 }

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/InvokeDispatchContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -21,6 +21,8 @@
 */
 package org.jboss.dependency.spi.dispatch;
 
+import org.jboss.reflect.spi.ClassInfo;
+
 /**
  * The API similar to the DynamicMBean API
  * where there are methods to get/set Properties/Attributes and invoke on
@@ -44,7 +46,20 @@
    Object invoke(String name, Object parameters[], String[] signature) throws Throwable;
 
    /**
+    * Get context's classinfo.
+    * This can be null if it cannot be determined.
+    *
+    * Used when determining type info for parameter and
+    * getting the parameter actual value.
+    * This way we don't require target for more exact parameter matching.
+    *
+    * @return classinfo or null
+    */
+   ClassInfo getClassInfo();
+
+   /**
     * Get context's classloader.
+    *
     * Used when determining type info for parameter and
     * getting the parameter actual value.
     *

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/spi/helpers/UnmodifiableControllerContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -88,6 +88,11 @@
       return delegate.getTarget();
    }
 
+   public Object ungetTarget()
+   {
+      return delegate.ungetTarget();
+   }
+
    public Controller getController()
    {
       return delegate.getController();

Modified: projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/AbstractMetaDataVisitorNode.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/AbstractMetaDataVisitorNode.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/AbstractMetaDataVisitorNode.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -46,6 +46,16 @@
          return children.iterator();
    }
 
+   /**
+    * This is a helper method so we don't have to explicitly
+    * implement this on every sub-metadata class.
+    */
+   @SuppressWarnings({"JavaDoc", "UnusedDeclaration"})
+   public Object ungetValue(ServiceValueContext valueContext) throws Throwable
+   {
+      return null;
+   }
+
    public void visit(ServiceMetaDataVisitor visitor)
    {
       visitor.visit(this);

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-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceInjectionValueMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -50,7 +50,7 @@
  * name of a bean installed in the underlying {@link Controller}
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision$
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  */
 public class ServiceInjectionValueMetaData extends AbstractMetaDataVisitorNode
    implements ServiceValueMetaData, Serializable
@@ -181,22 +181,43 @@
       ControllerContext context = controller.getContext(dependency, state);
       if (context == null)
          throw new Error("Should not be here - dependency failed! " + this);
-      Object result = context.getTarget();
-      if (property != null)
+
+      if (property != null && property.length() > 0)
       {
          if (context instanceof AttributeDispatchContext)
          {
             AttributeDispatchContext adc = (AttributeDispatchContext)context;
-            result = adc.get(property);
+            return adc.get(property);
          }
          else
             throw new IllegalArgumentException(
                   "Cannot use property attribute, context is not AttributeDispatchContext: " + context +
                   ", metadata: " + this);
       }
-      return result;
+      else
+      {
+         return context.getTarget();
+      }
    }
 
+   @Override
+   public Object ungetValue(ServiceValueContext valueContext) throws Throwable
+   {
+      if (property == null || property.length() == 0)
+      {
+         KernelController controller = valueContext.getController();
+
+         ControllerState state = dependentState;
+         if (state == null)
+            state = ControllerState.INSTALLED;
+
+         ControllerContext context = controller.getContext(dependency, state);
+         if (context != null)
+            return context.ungetTarget();
+      }
+      return super.ungetValue(valueContext);
+   }
+
    public void visit(ServiceMetaDataVisitor visitor)
    {
       ServiceControllerContext context = visitor.getControllerContext();

Modified: projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceJBXBValueMetaData.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceJBXBValueMetaData.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceJBXBValueMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -103,8 +103,7 @@
          SchemaBindingResolver resolver = SingletonSchemaResolverFactory.getInstance().getSchemaBindingResolver();
          Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
          StringReader reader = new StringReader(buffer.toString());
-         Object bean = unmarshaller.unmarshal(reader, resolver);
-         return bean;
+         return unmarshaller.unmarshal(reader, resolver);
       }
       finally
       {

Modified: projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryParameterMetaData.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryParameterMetaData.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryParameterMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -35,6 +35,7 @@
  * @author Brian Stansberry
  * @version $Revision$
  */
+// TODO - make this proper ServiceValueMetaData
 public class ServiceValueFactoryParameterMetaData
 {
    private final String textValue;
@@ -87,7 +88,12 @@
       
       return getValue(valueContext.getClassloader(), this.textValue, desiredType, valueContext.getAttributeInfo().getName());
    }
-   
+
+   public Object ungetValue(ServiceValueContext valueContext) throws Exception
+   {
+      return null;
+   }
+
    @Override
    public boolean equals(Object obj)
    {

Modified: projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryValueMetaData.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryValueMetaData.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueFactoryValueMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -86,7 +86,7 @@
          throw new IllegalArgumentException("Null method");
       this.method = method;
       
-      this.parameterMetaData = (parameters == null ? Collections.EMPTY_LIST : parameters);
+      this.parameterMetaData = (parameters == null ? Collections.<ServiceValueFactoryParameterMetaData>emptyList() : parameters);
       
       this.dependentState = (dependentState == null ? ControllerState.INSTALLED : dependentState);
       
@@ -141,12 +141,11 @@
       if (state == null)
          state = ControllerState.INSTALLED;
 
-      
       ControllerContext factoryContext = controller.getContext(dependency, state);
       if (factoryContext == null)
          throw new Error("Should not be here - dependency failed! " + this);
       
-      Object result = null;
+      Object result;
       
       if (factoryContext instanceof InvokeDispatchContext)
       {
@@ -168,6 +167,16 @@
       return result;
    }
 
+   @Override
+   public Object ungetValue(ServiceValueContext valueContext) throws Throwable
+   {
+      for (ServiceValueFactoryParameterMetaData metadata : parameterMetaData)
+      {
+         metadata.ungetValue(valueContext);
+      }
+      return null;
+   }
+
    public void visit(ServiceMetaDataVisitor visitor)
    {
       ServiceControllerContext context = visitor.getControllerContext();
@@ -246,7 +255,6 @@
          }
          
          parameterValues[i] = metadata.getValue(valueContext);
-
       }
    }
 

Modified: projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueMetaData.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueMetaData.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/metadata/ServiceValueMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -27,7 +27,7 @@
  * The actual implementation depends on the contents of the <code>attribute</code> element.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision$
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  */
 public interface ServiceValueMetaData extends ServiceMetaDataVisitorNode
 {
@@ -40,4 +40,14 @@
     * @throws Throwable for any error
     */
    Object getValue(ServiceValueContext valueContext) throws Throwable;
+
+   /**
+    * Ungets the value for an attribute that is used when configuring the MBean
+    * and setting its attributes.
+    *
+    * @param valueContext the value context used to load the
+    * @return the value to be used for the MBean attribute
+    * @throws Throwable for any error
+    */
+   Object ungetValue(ServiceValueContext valueContext) throws Throwable;
 }

Modified: projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/microcontainer/ServiceControllerContext.java
===================================================================
--- projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/microcontainer/ServiceControllerContext.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/jmx-mc-int/src/main/java/org/jboss/system/microcontainer/ServiceControllerContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -24,6 +24,7 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.Iterator;
+
 import javax.management.Attribute;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
@@ -35,12 +36,16 @@
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.dependency.spi.dispatch.LifecycleDispatchContext;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.config.KernelConfigurator;
+import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.system.Service;
 import org.jboss.system.ServiceContext;
 import org.jboss.system.ServiceController;
 import org.jboss.system.metadata.ServiceMetaData;
 import org.jboss.system.metadata.ServiceMetaDataVisitor;
 import org.jboss.system.metadata.ServiceMetaDataVisitorNode;
+import org.jboss.beans.info.spi.BeanInfo;
 
 /**
  * ServiceControllerContext. Represents an MBean that is being installed in the Microcontainer and
@@ -188,11 +193,35 @@
       getMBeanServer().setAttribute(objectName, attribute);
    }
 
+   public BeanInfo getBeanInfo()
+   {
+      Object target = getTarget();
+      if (target == null)
+         return null;
+
+      try
+      {
+         Kernel kernel = serviceController.getKernel();
+         KernelConfigurator configurator = kernel.getConfigurator();
+         return configurator.getBeanInfo(target.getClass());
+      }
+      catch (Throwable ignored)
+      {
+         return null;
+      }
+   }
+
    public Object invoke(String name, Object parameters[], String[] signature) throws Throwable
    {
       return getMBeanServer().invoke(objectName, name, parameters, signature);
    }
 
+   public ClassInfo getClassInfo()
+   {
+      BeanInfo beanInfo = getBeanInfo();
+      return (beanInfo != null) ? beanInfo.getClassInfo() : null;
+   }
+
    public ClassLoader getClassLoader() throws Throwable
    {
       if (serviceMetaData != null)

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-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractDependencyValueMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -311,6 +311,22 @@
       return info != null ? info.convertValue(result) : result;
    }
 
+   @Override
+   public Object ungetValue(TypeInfo info, ClassLoader cl) throws Throwable
+   {
+      if (property == null || property.length() == 0)
+      {
+         ControllerState state = dependentState;
+         if (state == null)
+            state = ControllerState.INSTALLED;
+         ControllerContext lookup = getControllerContext(getUnderlyingValue(), state);
+         if (lookup != null)
+            return lookup.ungetTarget();
+      }
+
+      return super.ungetValue(info, cl);
+   }
+
    protected boolean addDependencyItem()
    {
       return true;

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-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -201,6 +201,18 @@
       return super.getValue(info, cl);
    }
 
+   @SuppressWarnings({"deprecation"})
+   public Object ungetValue(TypeInfo info, ClassLoader cl) throws Throwable
+   {
+      if (getUnderlyingValue() == null)
+      {
+         ControllerContext lookup = getControllerContext(info.getType(), ControllerState.INSTALLED);
+         if (lookup != null)
+            return lookup.ungetTarget();
+      }
+      return super.ungetValue(info, cl);
+   }
+
    protected boolean addDependencyItem()
    {
       return InjectOption.STRICT.equals(injectionOption) || fromContext != null;

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInstallMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -23,8 +23,8 @@
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
 
 import org.jboss.beans.metadata.spi.InstallMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
@@ -32,7 +32,7 @@
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.dependency.spi.DependencyItem;
-import org.jboss.kernel.spi.config.KernelConfigurator;
+import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.reflect.spi.ClassInfo;
@@ -118,15 +118,14 @@
       {
          KernelController controller = (KernelController) context.getController();
          ControllerContext beanContext = controller.getContext(bean, ControllerState.INSTANTIATED);
-         if (beanContext != null)
+         if (beanContext != null && beanContext instanceof InvokeDispatchContext)
          {
-            KernelConfigurator configurator = controller.getKernel().getConfigurator();
-            Object target = beanContext.getTarget();
-            return configurator.getClassInfo(target.getClass());
+            InvokeDispatchContext idc = InvokeDispatchContext.class.cast(beanContext);
+            return idc.getClassInfo();
          }
          else
          {
-            throw new IllegalArgumentException("Cannot determine install bean class: " + this);
+            throw new IllegalArgumentException("Cannot determine install bean class: " + beanContext + " on " + this);
          }
       }
       return super.getClassInfo(context);

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -176,14 +176,14 @@
             ControllerContext context = controller.getContext(beanName, ControllerState.INSTANTIATED);
             if (context != null && context instanceof AttributeDispatchContext)
             {
-               Object target = context.getTarget();
-               if (target != null)
+               AttributeDispatchContext adc = AttributeDispatchContext.class.cast(context);
+               BeanInfo beanInfo = adc.getBeanInfo();
+               if (beanInfo != null)
                {
-                  BeanInfo beanInfo = configurator.getBeanInfo(target.getClass());
                   PropertyInfo pi = beanInfo.getProperty(propertyName);
                   if (pi.isReadable())
                   {
-                     result = pi.get(target);
+                     result = adc.get(propertyName);
                   }
                }
             }

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-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/ThisValueMetaData.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -65,6 +65,17 @@
       return context.getTarget();
    }
 
+   @Override
+   public Object ungetValue(TypeInfo info, ClassLoader cl) throws Throwable
+   {
+      Controller controller = context.getController();
+      ControllerContext context = controller.getContext(getUnderlyingValue(), ControllerState.INSTANTIATED);
+      if (context != null)
+         return context.ungetTarget();
+
+      return super.ungetValue(info, cl);
+   }
+
    public void initialVisit(MetaDataVisitor visitor)
    {
       context = visitor.getControllerContext();

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/AbstractKernelConfigurator.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/AbstractKernelConfigurator.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/AbstractKernelConfigurator.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -138,9 +138,9 @@
       return Configurator.getConstructorJoinPoint(config, info, metaData, beanMetaData, object);
    }
 
-   public Joinpoint getConstructorJoinPoint(BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object, boolean unget) throws Throwable
+   public Joinpoint ungetConstructorJoinPoint(BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object) throws Throwable
    {
-      return Configurator.getConstructorJoinPoint(config, info, metaData, beanMetaData, object, unget);
+      return Configurator.ungetConstructorJoinPoint(config, info, metaData, beanMetaData, object);
    }
 
    public MethodJoinpoint getMethodJoinPoint(BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic) throws Throwable
@@ -148,9 +148,9 @@
       return Configurator.findMethod(info, cl, name, parameters, isStatic, isPublic);
    }
 
-   public MethodJoinpoint getMethodJoinPoint(BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic, boolean unget) throws Throwable
+   public MethodJoinpoint ungetMethodJoinPoint(BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic) throws Throwable
    {
-      return Configurator.findMethod(info, cl, name, parameters, isStatic, isPublic, unget);
+      return Configurator.findMethod(info, cl, name, parameters, isStatic, isPublic, true);
    }
 
    public void setKernel(Kernel kernel) throws Throwable

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/Configurator.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/Configurator.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/Configurator.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -127,10 +127,26 @@
     */
    public static Joinpoint getConstructorJoinPoint(KernelConfig config, BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object) throws Throwable
    {
-      return getConstructorJoinPoint(config, info, metaData, beanMetaData, object, false);
+      return handleConstructorJoinPoint(config, info, metaData, beanMetaData, object, false);
    }
 
    /**
+    * Unget a constructor joinpoint
+    *
+    * @param config the kernel config
+    * @param info the bean info
+    * @param metaData the constructor metadata
+    * @param beanMetaData the bean metadata
+    * @param object an opaque object
+    * @return the joinpoint
+    * @throws Throwable for any error
+    */
+   public static Joinpoint ungetConstructorJoinPoint(KernelConfig config, BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object) throws Throwable
+   {
+      return handleConstructorJoinPoint(config, info, metaData, beanMetaData, object, false);
+   }
+
+   /**
     * Get a constructor joinpoint
     *
     * @param config the kernel config
@@ -142,7 +158,7 @@
     * @return the joinpoint
     * @throws Throwable for any error
     */
-   public static Joinpoint getConstructorJoinPoint(KernelConfig config, BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object, boolean unget) throws Throwable
+   protected static Joinpoint handleConstructorJoinPoint(KernelConfig config, BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object, boolean unget) throws Throwable
    {
       boolean trace = log.isTraceEnabled();
 
@@ -170,27 +186,20 @@
          {
             // Get the factory
             Object factory;
-            if (unget)
+            try
             {
-               try
-               {
-                  factory = vmd.getValue(null, cl);
-               }
-               finally
-               {
-                  vmd.ungetValue(null, cl); // do cleanup call
-               }
+               factory = vmd.getValue(null, cl);
             }
-            else
+            finally
             {
-               factory = vmd.getValue(null, cl);
+               vmd.ungetValue(null, cl); // do cleanup call
             }
             // Get the parameters
             List<ParameterMetaData> parameters = metaData.getParameters();
             // Describe the factory
             BeanInfo factoryInfo = config.getBeanInfo(factory.getClass());
             // Find the method
-            MethodJoinpoint joinPoint = findMethod(trace, factoryInfo, cl, metaData.getFactoryMethod(), parameters, false, true, unget);
+            MethodJoinpoint joinPoint = handleMethod(trace, factoryInfo, cl, metaData.getFactoryMethod(), parameters, false, true, unget);
             joinPoint.setTarget(factory);
             return joinPoint;
          }
@@ -202,7 +211,7 @@
             List<ParameterMetaData> parameters = metaData.getParameters();
             BeanInfo factoryInfo = config.getBeanInfo(factoryClassName, cl);
             // Find the method
-            return findMethod(trace, factoryInfo, cl, metaData.getFactoryMethod(), parameters, true, true, unget);
+            return handleMethod(trace, factoryInfo, cl, metaData.getFactoryMethod(), parameters, true, true, unget);
          }
 
          // Find the constructor
@@ -212,7 +221,7 @@
          if (cinfo != null)
          {
             TypeInfo[] pinfos = cinfo.getParameterTypes();
-            Object[] params = getParameters(trace, cl, pinfos, metaData.getParameters(), unget);
+            Object[] params = handleParameters(trace, cl, pinfos, metaData.getParameters(), unget);
             joinPoint.setArguments(params);
          }
          return joinPoint;
@@ -548,10 +557,10 @@
     * @return the method join point
     * @throws Throwable for any error
     */
-   public static MethodJoinpoint findMethod(BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic, boolean unget) throws Throwable
+   static MethodJoinpoint findMethod(BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic, boolean unget) throws Throwable
    {
       boolean trace = log.isTraceEnabled();
-      return findMethod(trace, info, cl, name, parameters, isStatic, isPublic, unget);
+      return handleMethod(trace, info, cl, name, parameters, isStatic, isPublic, unget);
    }
 
    /**
@@ -569,7 +578,7 @@
     */
    public static MethodJoinpoint findMethod(boolean trace, BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic) throws Throwable
    {
-      return findMethod(trace, info, cl, name, parameters, isStatic, isPublic, false);
+      return handleMethod(trace, info, cl, name, parameters, isStatic, isPublic, false);
    }
 
    /**
@@ -586,7 +595,7 @@
     * @return the method join point
     * @throws Throwable for any error
     */
-   public static MethodJoinpoint findMethod(boolean trace, BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic, boolean unget) throws Throwable
+   public static MethodJoinpoint handleMethod(boolean trace, BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic, boolean unget) throws Throwable
    {
       if (info == null)
          throw new IllegalArgumentException("Null bean info");
@@ -602,7 +611,7 @@
       if (minfo != null)
       {
          TypeInfo[] pinfos = minfo.getParameterTypes();
-         Object[] params = getParameters(trace, cl, pinfos, parameters, unget);
+         Object[] params = handleParameters(trace, cl, pinfos, parameters, unget);
          joinPoint.setArguments(params);
       }
 
@@ -659,11 +668,42 @@
     * @param cl the classloader
     * @param pinfos the parameter infos
     * @param parameters the parameter metadata
+    * @return an array of parameters
+    * @throws Throwable for any error
+    */
+   public static Object[] getParameters(boolean trace, ClassLoader cl, TypeInfo[] pinfos, List<ParameterMetaData> parameters) throws Throwable
+   {
+      return handleParameters(trace, cl, pinfos, parameters, false);
+   }
+
+   /**
+    * Unget the parameters.
+    * Cleanup parameter values.
+    *
+    * @param trace whether trace is enabled
+    * @param cl the classloader
+    * @param pinfos the parameter infos
+    * @param parameters the parameter metadata
+    * @return an array of parameters
+    * @throws Throwable for any error
+    */
+   public static Object[] ungetParameters(boolean trace, ClassLoader cl, TypeInfo[] pinfos, List<ParameterMetaData> parameters) throws Throwable
+   {
+      return handleParameters(trace, cl, pinfos, parameters, true);
+   }
+
+   /**
+    * Get the parameters
+    *
+    * @param trace whether trace is enabled
+    * @param cl the classloader
+    * @param pinfos the parameter infos
+    * @param parameters the parameter metadata
     * @param unget do we actually do an unget on params
     * @return an array of parameters
     * @throws Throwable for any error
     */
-   public static Object[] getParameters(boolean trace, ClassLoader cl, TypeInfo[] pinfos, List<ParameterMetaData> parameters, boolean unget) throws Throwable
+   public static Object[] handleParameters(boolean trace, ClassLoader cl, TypeInfo[] pinfos, List<ParameterMetaData> parameters, boolean unget) throws Throwable
    {
       if (parameters == null)
          return NO_PARAM_VALUES;

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -48,6 +48,7 @@
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.util.JBossStringBuilder;
 
 /**
@@ -304,6 +305,11 @@
       return getInfo().invoke(getTarget(), name, signature, parameters);
    }
 
+   public ClassInfo getClassInfo()
+   {
+      return getInfo().getClassInfo();
+   }
+
    // todo - remove or better security
    public ClassLoader getClassLoader() throws Throwable
    {

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -132,7 +132,7 @@
             BeanInfo info = context.getBeanInfo();
             MetaData repositoryMetaData = repository.getMetaData(context);
 
-            Joinpoint joinPoint = configurator.getConstructorJoinPoint(info, metaData.getConstructor(), metaData, repositoryMetaData, true);
+            Joinpoint joinPoint = configurator.ungetConstructorJoinPoint(info, metaData.getConstructor(), metaData, repositoryMetaData);
             cleanup = cleanupJoinPoint(context, joinPoint);
          }
          catch (Throwable ignored)

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/LifecycleAction.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/LifecycleAction.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/LifecycleAction.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -225,7 +225,11 @@
       ClassLoader cl = Configurator.getClassLoader(metaData);
       try
       {
-         MethodJoinpoint joinpoint = configurator.getMethodJoinPoint(info, cl, method, parameters, false, true, unget);
+         MethodJoinpoint joinpoint;
+         if (unget)
+            joinpoint = configurator.ungetMethodJoinPoint(info, cl, method, parameters, false, true);
+         else
+            joinpoint = configurator.getMethodJoinPoint(info, cl, method, parameters, false, true);
          joinpoint.setTarget(target);
          return joinpoint;
       }
@@ -277,13 +281,13 @@
             ClassLoader cl = Configurator.getClassLoader(metaData);
             try
             {
-               joinpoint = configurator.getMethodJoinPoint(info, cl, method, parameters, false, true, false);
+               joinpoint = configurator.getMethodJoinPoint(info, cl, method, parameters, false, true);
                joinpoint.setTarget(target);
                dispatchJoinPoint(context, joinpoint);
             }
             finally
             {
-               joinpoint = configurator.getMethodJoinPoint(info, cl, method, parameters, false, true, true);
+               joinpoint = configurator.ungetMethodJoinPoint(info, cl, method, parameters, false, true);
                joinpoint.setTarget(target);
                cleanupJoinPoint(context, joinpoint);
             }
@@ -362,5 +366,4 @@
       // todo some parameter support
       return getUninstallParameters(context.getBeanMetaData());
    }
-
 }
\ No newline at end of file

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PropertyDispatchWrapper.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PropertyDispatchWrapper.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PropertyDispatchWrapper.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -137,18 +137,13 @@
    /**
     * Nullify by matching type on .
     *
-    * @param name the property name
+    * @param upperName the property upper name
     * @param typeInfo the type info
     * @param value the value to set
     * @throws Throwable for any error
     */
-   protected void nullifyByMatchingType(String name, TypeInfo typeInfo, Object value) throws Throwable
+   protected void nullifyByMatchingType(String upperName, TypeInfo typeInfo, Object value) throws Throwable
    {
-      // TODO - remove this Character.toUpperCase once Reflect is updated
-      String upperName = "set" + Character.toUpperCase(name.charAt(0));
-      if (name.length() > 1)
-         upperName += name.substring(1);
-
       Set<MethodInfo> methods = beanInfo.getMethods();
       for (MethodInfo minfo : methods)
       {

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dispatch/InvokeDispatchHelper.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -25,11 +25,11 @@
 
 import org.jboss.beans.metadata.spi.ParameterMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
-import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
 import org.jboss.kernel.plugins.config.Configurator;
 import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.logging.Logger;
+import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.TypeInfo;
 
@@ -69,16 +69,15 @@
       }
       else
       {
-         Object target = (context instanceof ControllerContext) ? ControllerContext.class.cast(context).getTarget() : null;
+         ClassInfo classInfo = context.getClassInfo(); // no need for target
          int size = params.size();
          signature = Configurator.getParameterTypes(log.isTraceEnabled(), params);
-         // TODO - is this ok for non-POJO targets?
          ClassLoader classLoader = SecurityActions.getClassLoader(context);
-         if (target != null)
+         if (classInfo != null)
          {
-            MethodInfo methodInfo = Configurator.findMethodInfo(configurator.getClassInfo(target.getClass()), methodName, signature);
+            MethodInfo methodInfo = Configurator.findMethodInfo(classInfo, methodName, signature);
             TypeInfo[] infos = methodInfo.getParameterTypes();
-            parameters = Configurator.getParameters(log.isTraceEnabled(), classLoader, infos, params, unget);
+            parameters = Configurator.handleParameters(log.isTraceEnabled(), classLoader, infos, params, unget);
             // add some more info, if not yet set
             for(int i = 0; i < size; i++)
             {
@@ -106,7 +105,6 @@
                else
                   parameters[i] = vmd.getValue(typeInfo, classLoader);
             }
-
          }
       }
       return (unget == false) ? context.invoke(methodName, parameters, signature) : null;

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-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/AbstractKernelRegistryEntry.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -92,7 +92,12 @@
       return target;
    }
 
-   // @todo SORT THIS OUT, i.e. dependency that doesn't go through controller
+   public Object ungetTarget()
+   {
+      return null;
+   }
+
+// @todo SORT THIS OUT, i.e. dependency that doesn't go through controller
    
    public Controller getController()
    {

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/BeanKernelRegistryEntry.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/BeanKernelRegistryEntry.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/BeanKernelRegistryEntry.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -23,6 +23,7 @@
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
+import org.jboss.reflect.spi.ClassInfo;
 
 /**
  * Bean Kernel registry entry.
@@ -57,11 +58,21 @@
       beanInfo.setProperty(target, name, value);
    }
 
+   public BeanInfo getBeanInfo()
+   {
+      return beanInfo;
+   }
+
    public Object invoke(String name, Object parameters[], String[] signature) throws Throwable
    {
       return beanInfo.invoke(target, name, signature, parameters);
    }
 
+   public ClassInfo getClassInfo()
+   {
+      return beanInfo.getClassInfo();
+   }
+
    public ClassLoader getClassLoader() throws Throwable
    {
       if (target == null)

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfigurator.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -202,21 +202,20 @@
    Joinpoint getConstructorJoinPoint(BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object) throws Throwable;
 
    /**
-    * Get a constructor join point a bean info. This will be the constructor
+    * Unget a constructor join point a bean info. This will be the constructor
     * that is the closest match to the constructor specified by the passed in constructor
     * metadata.
     *
-    * Note: there is a new unget parameter, which is used to do proper cleanup on the Joinpoint
+    * Note: this will invoke a cleanup on parameter values.
     *
     * @param info the bean info
     * @param metaData the constructor metadata
     * @param beanMetaData the bean metadata
     * @param object an opaque object. If used with AOP this should be the {@link MetaData} for the bean.
-    * @param unget do we actually do an unget on the ctor
     * @return the join point
     * @throws Throwable for any error
     */
-   Joinpoint getConstructorJoinPoint(BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object, boolean unget) throws Throwable;
+   Joinpoint ungetConstructorJoinPoint(BeanInfo info, ConstructorMetaData metaData, BeanMetaData beanMetaData, Object object) throws Throwable;
 
    /**
     * Get a method joinpoint for a bean.
@@ -241,9 +240,8 @@
     * @param parameters the parameter metadata
     * @param isStatic whether the method is static
     * @param isPublic whether the method is public
-    * @param unget do we actually do an unget on the ctor
     * @return the method join point
     * @throws Throwable for any error
     */
-   MethodJoinpoint getMethodJoinPoint(BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic, boolean unget) throws Throwable;
+   MethodJoinpoint ungetMethodJoinPoint(BeanInfo info, ClassLoader cl, String name, List<ParameterMetaData> parameters, boolean isStatic, boolean isPublic) throws Throwable;
 }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java	2009-11-18 09:59:58 UTC (rev 96486)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java	2009-11-18 12:59:59 UTC (rev 96487)
@@ -28,6 +28,7 @@
 import org.jboss.dependency.spi.helpers.UnmodifiableControllerContext;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.reflect.spi.ClassInfo;
 
 /**
  * A wrapper around a {@link KernelControllerContext} that throws UnsupportedOperationException when any
@@ -91,7 +92,7 @@
     * Overrides {@link KernelControllerContext#setName(Object)} to throw an {@link UnsupportedOperationException}
     * when called.
     * 
-    * @param info the name to set
+    * @param name the name to set
     * @throws UnsupportedOperationException when called
     */
    public void setName(Object name)
@@ -113,6 +114,11 @@
       throw new UnsupportedOperationException("Cannot execute invoke on unmodifiable wrapper.");
    }
 
+   public ClassInfo getClassInfo()
+   {
+      return getDelegate().getClassInfo();
+   }
+
    public ClassLoader getClassLoader() throws Throwable
    {
       return getDelegate().getClassLoader();




More information about the jboss-cvs-commits mailing list