[jboss-cvs] JBossAS SVN: r90317 - in projects/microcontainer/branches/Branch_2_0: aop-mc-int/src/test/java/org/jboss/test/microcontainer/test and 33 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 17 08:14:19 EDT 2009


Author: alesj
Date: 2009-06-17 08:14:18 -0400 (Wed, 17 Jun 2009)
New Revision: 90317

Added:
   projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/AnnotationsTestCase.java
   projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/dispatch/LifecycleDispatchContext.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/LifecycleAwareKernelBus.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/support/RareBeanHolder.java
Removed:
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java
Modified:
   projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/annotations/DisabledType.java
   projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
   projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/ControllerMode.java
   projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/ManualControllerTestCase.java
   projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java
   projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/aopDevelopment/
   projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/aopDevelopment/aspects/
   projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/gettingStarted/auditAspect/
   projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/gettingStarted/commandLineClient/
   projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/gettingStarted/humanResourcesService/
   projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/injection/pom.xml
   projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/pom.xml
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderFactory.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/Kernel.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/BasicKernelBus.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/main/resources/schema/jboss-beans-common_2_0.xsd
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/support/BusBean.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/test/BusTestCase.java
   projects/microcontainer/branches/Branch_2_0/kernel/src/test/resources/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.xml
Log:
Port trunk changes.

Modified: projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/annotations/DisabledType.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/annotations/DisabledType.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/annotations/DisabledType.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -36,7 +36,6 @@
    LIFECYCLE,
    POINTCUTS;
 
-
    /**
     * Is the type disabled for this constraint.
     *
@@ -45,11 +44,7 @@
     */
    public boolean isDisabled(DisabledType constraint)
    {
-      if (this == ALL)
-      {
-         return true;
-      }
-      return this == constraint;
+      return this == ALL || this == constraint;
    }
 
    /**
@@ -68,18 +63,26 @@
     *
     * @param values the disabled values
     * @param constraint the constraint
-    * @return true if disabled for this constraint
+    * @return true if disabled for this constraint, false otherwise
     */
    public static boolean isDisabled(DisabledType[] values, DisabledType constraint)
    {
       if (values == null || values.length == 0)
          return false;
+
       EnumSet<DisabledType> set = EnumSet.copyOf(Arrays.asList(values));
       return set.contains(ALL) || set.contains(constraint);
    }
-   
+
+   /**
+    * Do values mark enabled usage.
+    *
+    * @param values the disabled values
+    * @param constraint the constraint
+    * @return true if enabled for this constraint, false otherwise
+    */
    public static boolean isEnabled(DisabledType[] values, DisabledType constraint)
    {
-      return !isDisabled(values, constraint);
+      return isDisabled(values, constraint) == false;
    }
 }

Copied: projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/AnnotationsTestCase.java (from rev 89523, projects/microcontainer/trunk/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/AnnotationsTestCase.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/AnnotationsTestCase.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/AnnotationsTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,101 @@
+/*
+  * JBoss, Home of Professional Open Source
+  * Copyright 2005, JBoss Inc., and individual contributors as indicated
+  * by the @authors tag. See the copyright.txt in the distribution for a
+  * full listing of individual contributors.
+  *
+  * This is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU Lesser General Public License as
+  * published by the Free Software Foundation; either version 2.1 of
+  * the License, or (at your option) any later version.
+  *
+  * This software is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this software; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  */
+package org.jboss.test.microcontainer.test;
+
+import junit.framework.Test;
+import org.jboss.test.aop.junit.AOPMicrocontainerTest;
+import org.jboss.aop.microcontainer.annotations.DisabledType;
+
+/**
+ * Annotations test case.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class AnnotationsTestCase extends AOPMicrocontainerTest
+{
+   public static Test suite()
+   {
+      return suite(AnnotationsTestCase.class);
+   }
+
+   public AnnotationsTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testDisabledType() throws Exception
+   {
+      DisabledType all = DisabledType.ALL;
+      assertTrue(all.isDisabled(DisabledType.ALL));
+      assertTrue(all.isDisabled(DisabledType.LIFECYCLE));
+      assertTrue(all.isDisabled(DisabledType.POINTCUTS));
+      assertFalse(all.isEnabled(DisabledType.ALL));
+      assertFalse(all.isEnabled(DisabledType.LIFECYCLE));
+      assertFalse(all.isEnabled(DisabledType.POINTCUTS));
+
+      DisabledType lifecycle = DisabledType.LIFECYCLE;
+      assertFalse(lifecycle.isDisabled(DisabledType.ALL));
+      assertTrue(lifecycle.isDisabled(DisabledType.LIFECYCLE));
+      assertFalse(lifecycle.isDisabled(DisabledType.POINTCUTS));
+      assertTrue(lifecycle.isEnabled(DisabledType.ALL));
+      assertFalse(lifecycle.isEnabled(DisabledType.LIFECYCLE));
+      assertTrue(lifecycle.isEnabled(DisabledType.POINTCUTS));
+
+      DisabledType pointcut = DisabledType.POINTCUTS;
+      assertFalse(pointcut.isDisabled(DisabledType.ALL));
+      assertFalse(pointcut.isDisabled(DisabledType.LIFECYCLE));
+      assertTrue(pointcut.isDisabled(DisabledType.POINTCUTS));
+      assertTrue(pointcut.isEnabled(DisabledType.ALL));
+      assertTrue(pointcut.isEnabled(DisabledType.LIFECYCLE));
+      assertFalse(pointcut.isEnabled(DisabledType.POINTCUTS));
+
+      DisabledType[] three = {all, lifecycle, pointcut};
+      assertTrue(DisabledType.isDisabled(three, DisabledType.ALL));
+      assertTrue(DisabledType.isDisabled(three, DisabledType.LIFECYCLE));
+      assertTrue(DisabledType.isDisabled(three, DisabledType.POINTCUTS));
+      assertFalse(DisabledType.isEnabled(three, DisabledType.ALL));
+      assertFalse(DisabledType.isEnabled(three, DisabledType.LIFECYCLE));
+      assertFalse(DisabledType.isEnabled(three, DisabledType.POINTCUTS));
+
+      DisabledType[] two = {all, lifecycle};
+      assertTrue(DisabledType.isDisabled(two, DisabledType.ALL));
+      assertTrue(DisabledType.isDisabled(two, DisabledType.LIFECYCLE));
+      assertTrue(DisabledType.isDisabled(two, DisabledType.POINTCUTS));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.ALL));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.LIFECYCLE));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.POINTCUTS));
+      two = new DisabledType[]{all, pointcut};
+      assertTrue(DisabledType.isDisabled(two, DisabledType.ALL));
+      assertTrue(DisabledType.isDisabled(two, DisabledType.LIFECYCLE));
+      assertTrue(DisabledType.isDisabled(two, DisabledType.POINTCUTS));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.ALL));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.LIFECYCLE));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.POINTCUTS));
+      two = new DisabledType[]{lifecycle, pointcut};
+      assertFalse(DisabledType.isDisabled(two, DisabledType.ALL));
+      assertTrue(DisabledType.isDisabled(two, DisabledType.LIFECYCLE));
+      assertTrue(DisabledType.isDisabled(two, DisabledType.POINTCUTS));
+      assertTrue(DisabledType.isEnabled(two, DisabledType.ALL));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.LIFECYCLE));
+      assertFalse(DisabledType.isEnabled(two, DisabledType.POINTCUTS));
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -726,8 +726,9 @@
             }
          }
 
-         if (ControllerMode.AUTOMATIC.equals(context.getMode()))
-            context.setRequiredState(ControllerState.INSTALLED);
+         // set the required state
+         ControllerMode mode = context.getMode();
+         context.setRequiredState(mode.getRequiredState());
 
          if (trace)
             log.trace("Installing " + context.toShortString());

Modified: projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/ControllerMode.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/ControllerMode.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/ControllerMode.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -32,20 +32,24 @@
  * Mode of the context.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision$
  */
 @JBossXmlEnum(ignoreCase=true)
 public enum ControllerMode
 {
-   AUTOMATIC("Automatic"),
-   @XmlEnumValue("On Demand") ON_DEMAND("On Demand"),
+   AUTOMATIC("Automatic", ControllerState.INSTALLED),
+   @XmlEnumValue("On Demand") ON_DEMAND("On Demand", ControllerState.DESCRIBED),
    MANUAL("Manual"),
    DISABLED("Disabled"),
-   ASYNCHRONOUS("Asynchronous");
+   ASYNCHRONOUS("Asynchronous", ControllerState.INSTALLED);
 
    /** The mode string */
    private final String modeString;
 
+   /** The required state */
+   private ControllerState requiredState;
+
    /**
     * Create a new mode
     * 
@@ -53,9 +57,18 @@
     */
    private ControllerMode(String modeString)
    {
+      this(modeString, null);
+   }
+
+   private ControllerMode(String modeString, ControllerState requiredState)
+   {
       if (modeString == null)
          throw new IllegalArgumentException("Null mode string");
+      if (requiredState == null)
+         requiredState = ControllerState.NOT_INSTALLED;
+
       this.modeString = modeString;
+      this.requiredState = requiredState;
    }
 
    /**
@@ -87,6 +100,16 @@
       return modeString;
    }
 
+   /**
+    * The required state.
+    *
+    * @return the required state
+    */
+   public ControllerState getRequiredState()
+   {
+      return requiredState;
+   }
+
    public void toString(JBossStringBuilder buffer)
    {
       buffer.append(modeString);

Copied: projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/dispatch/LifecycleDispatchContext.java (from rev 89523, projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/spi/dispatch/LifecycleDispatchContext.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/dispatch/LifecycleDispatchContext.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/dependency/src/main/java/org/jboss/dependency/spi/dispatch/LifecycleDispatchContext.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,48 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.dependency.spi.dispatch;
+
+import org.jboss.dependency.spi.ControllerState;
+
+/**
+ * This context knows how to handle lifecycle invocation.
+ * Resulting in valid lifecycle invocation will force this context to change state.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public interface LifecycleDispatchContext extends InvokeDispatchContext
+{
+   /**
+    * Is this invocation a lifecycle invocation.
+    * 
+    * Return state value to which this context should be moved
+    * or return current state if we're already past the lifecycle state
+    * or null if the invocation is actually not a lifecycle invocation.
+    *
+    * @param name method name
+    * @param parameters parameter values
+    * @param signature method's parameter types / signatures
+    * @return state to which we should move this context, or null if this is not lifecycle invocation
+    * @throws Throwable for any error
+    */
+   ControllerState lifecycleInvocation(String name, Object parameters[], String[] signature) throws Throwable;
+}
\ No newline at end of file

Modified: projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/ManualControllerTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/ManualControllerTestCase.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/ManualControllerTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -328,4 +328,20 @@
       assertEquals(-1, dependee.instantiateUninstallOrder);
       assertEquals(-1, dependee.describeUninstallOrder);
    }
+
+   public void testManualAndAutoMixed() throws Throwable
+   {
+      ControllerContext manual = createControllerContext("Manual");
+      manual.setMode(ControllerMode.MANUAL);
+      install(manual);
+      assertChange(manual, ControllerState.DESCRIBED, ControllerState.DESCRIBED);
+
+      ControllerContext auto = createControllerContext("Auto");
+      auto.setMode(ControllerMode.AUTOMATIC);
+      install(auto);
+      assertContext(auto);
+
+      // check that the auto doesn't move the manual
+      assertContext(manual, ControllerState.DESCRIBED);
+   }
 }

Modified: projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/dependency/src/test/java/org/jboss/test/dependency/controller/test/OnDemandDependencyTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -50,8 +50,8 @@
    public void testOnDemandDependencyOnDemandFirst() throws Throwable
    {
       TestDelegate delegate1 = getDelegate1();
-      ControllerContext context1 = assertInstall(delegate1, ControllerState.NOT_INSTALLED);
-      assertEquals(-1, delegate1.describeInstallOrder);
+      ControllerContext context1 = assertInstall(delegate1, ControllerState.DESCRIBED);
+      assertEquals(1, delegate1.describeInstallOrder);
       assertEquals(-1, delegate1.instantiateInstallOrder);
       assertEquals(-1, delegate1.configureInstallOrder);
       assertEquals(-1, delegate1.createInstallOrder);
@@ -65,9 +65,9 @@
       assertEquals(-1, delegate1.describeUninstallOrder);
       TestDelegate delegate2 = getDelegate2();
       assertInstall(delegate2);
-      assertEquals(1, delegate2.describeInstallOrder);
-      assertEquals(2, delegate2.instantiateInstallOrder);
-      assertEquals(3, delegate2.configureInstallOrder);
+      assertEquals(2, delegate2.describeInstallOrder);
+      assertEquals(3, delegate2.instantiateInstallOrder);
+      assertEquals(4, delegate2.configureInstallOrder);
       assertEquals(10, delegate2.createInstallOrder);
       assertEquals(11, delegate2.startInstallOrder);
       assertEquals(12, delegate2.installInstallOrder);
@@ -78,7 +78,7 @@
       assertEquals(-1, delegate2.instantiateUninstallOrder);
       assertEquals(-1, delegate2.describeUninstallOrder);
       assertContext(context1);
-      assertEquals(4, delegate1.describeInstallOrder);
+      assertEquals(1, delegate1.describeInstallOrder);
       assertEquals(5, delegate1.instantiateInstallOrder);
       assertEquals(6, delegate1.configureInstallOrder);
       assertEquals(7, delegate1.createInstallOrder);
@@ -153,8 +153,8 @@
    public void testChangeDependencyReinstall() throws Throwable
    {
       TestDelegate delegate1 = getDelegate1();
-      ControllerContext context1 = assertInstall(delegate1, ControllerState.NOT_INSTALLED);
-      assertEquals(-1, delegate1.describeInstallOrder);
+      ControllerContext context1 = assertInstall(delegate1, ControllerState.DESCRIBED);
+      assertEquals(1, delegate1.describeInstallOrder);
       assertEquals(-1, delegate1.instantiateInstallOrder);
       assertEquals(-1, delegate1.configureInstallOrder);
       assertEquals(-1, delegate1.createInstallOrder);
@@ -168,9 +168,9 @@
       assertEquals(-1, delegate1.describeUninstallOrder);
       TestDelegate delegate2 = getDelegate2();
       ControllerContext context2 = assertInstall(delegate2);
-      assertEquals(1, delegate2.describeInstallOrder);
-      assertEquals(2, delegate2.instantiateInstallOrder);
-      assertEquals(3, delegate2.configureInstallOrder);
+      assertEquals(2, delegate2.describeInstallOrder);
+      assertEquals(3, delegate2.instantiateInstallOrder);
+      assertEquals(4, delegate2.configureInstallOrder);
       assertEquals(10, delegate2.createInstallOrder);
       assertEquals(11, delegate2.startInstallOrder);
       assertEquals(12, delegate2.installInstallOrder);
@@ -181,7 +181,7 @@
       assertEquals(-1, delegate2.instantiateUninstallOrder);
       assertEquals(-1, delegate2.describeUninstallOrder);
       assertContext(context1);
-      assertEquals(4, delegate1.describeInstallOrder);
+      assertEquals(1, delegate1.describeInstallOrder);
       assertEquals(5, delegate1.instantiateInstallOrder);
       assertEquals(6, delegate1.configureInstallOrder);
       assertEquals(7, delegate1.createInstallOrder);
@@ -194,9 +194,9 @@
       assertEquals(-1, delegate1.instantiateUninstallOrder);
       assertEquals(-1, delegate1.describeUninstallOrder);
       assertUninstall(context2);
-      assertEquals(1, delegate2.describeInstallOrder);
-      assertEquals(2, delegate2.instantiateInstallOrder);
-      assertEquals(3, delegate2.configureInstallOrder);
+      assertEquals(2, delegate2.describeInstallOrder);
+      assertEquals(3, delegate2.instantiateInstallOrder);
+      assertEquals(4, delegate2.configureInstallOrder);
       assertEquals(10, delegate2.createInstallOrder);
       assertEquals(11, delegate2.startInstallOrder);
       assertEquals(12, delegate2.installInstallOrder);
@@ -207,7 +207,7 @@
       assertEquals(17, delegate2.instantiateUninstallOrder);
       assertEquals(18, delegate2.describeUninstallOrder);
       assertContext("Name1", ControllerState.INSTALLED);
-      assertEquals(4, delegate1.describeInstallOrder);
+      assertEquals(1, delegate1.describeInstallOrder);
       assertEquals(5, delegate1.instantiateInstallOrder);
       assertEquals(6, delegate1.configureInstallOrder);
       assertEquals(7, delegate1.createInstallOrder);
@@ -233,7 +233,7 @@
       assertEquals(17, delegate2.instantiateUninstallOrder);
       assertEquals(18, delegate2.describeUninstallOrder);
       assertUninstall(context1);
-      assertEquals(4, delegate1.describeInstallOrder);
+      assertEquals(1, delegate1.describeInstallOrder);
       assertEquals(5, delegate1.instantiateInstallOrder);
       assertEquals(6, delegate1.configureInstallOrder);
       assertEquals(7, delegate1.createInstallOrder);


Property changes on: projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/aopDevelopment
___________________________________________________________________
Name: svn:ignore
   + target



Property changes on: projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/aopDevelopment/aspects
___________________________________________________________________
Name: svn:ignore
   + target



Property changes on: projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/gettingStarted/auditAspect
___________________________________________________________________
Name: svn:ignore
   + target



Property changes on: projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/gettingStarted/commandLineClient
___________________________________________________________________
Name: svn:ignore
   + target



Property changes on: projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/gettingStarted/humanResourcesService
___________________________________________________________________
Name: svn:ignore
   + target


Modified: projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/injection/pom.xml
===================================================================
--- projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/injection/pom.xml	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/injection/pom.xml	2009-06-17 12:14:18 UTC (rev 90317)
@@ -5,6 +5,7 @@
     <groupId>org.jboss.microcontainer.examples</groupId>
     <artifactId>pojoDev</artifactId>
     <version>1.0.0</version>
+    <relativePath>..</relativePath>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -13,9 +14,10 @@
   <packaging>jar</packaging>
   <version>1.0.0</version>
   <name>Injection</name>
-  <description></description>
+  <description>Injection Example</description>
 
   <properties>
-    <parent.relative.dir>..</parent.relative.dir>
+    <parent.relative.dir>${project.parent.relativePath}</parent.relative.dir>
   </properties>
+  
 </project>

Modified: projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/pom.xml
===================================================================
--- projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/pom.xml	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/docs/examples/User_Guide/pojoDevelopment/pom.xml	2009-06-17 12:14:18 UTC (rev 90317)
@@ -34,12 +34,12 @@
       <dependency>
         <groupId>org.jboss.microcontainer</groupId>
         <artifactId>jboss-kernel</artifactId>
-        <version>2.0.0.Beta6</version>
+        <version>${mc.release}</version>
       </dependency>
       <dependency>
         <groupId>org.jboss.microcontainer</groupId>
         <artifactId>jboss-spring-int</artifactId>
-        <version>2.0.0.Beta6</version>
+        <version>${mc.release}</version>
       </dependency>
     </dependencies>
   </dependencyManagement>
@@ -127,5 +127,6 @@
 
   <properties>
     <parent.relative.dir>.</parent.relative.dir>
+    <mc.release>2.0.6.GA</mc.release>
   </properties>
 </project>

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderFactory.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderFactory.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderFactory.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -34,24 +34,24 @@
    /**
     * Create builder from bean.
     *
-    * @param bean bean class name
+    * @param beanClassName bean class name
     * @return new Builder
     */
-   public static BeanMetaDataBuilder createBuilder(String bean)
+   public static BeanMetaDataBuilder createBuilder(String beanClassName)
    {
-      return new BeanMetaDataBuilderImpl(bean);
+      return new BeanMetaDataBuilderImpl(beanClassName);
    }
 
    /**
     * Create builder from name and bean.
     *
-    * @param name bean name
-    * @param bean bean class name
+    * @param beanInstanceName bean name
+    * @param beanClassName bean class name
     * @return new Builder
     */
-   public static BeanMetaDataBuilder createBuilder(String name, String bean)
+   public static BeanMetaDataBuilder createBuilder(String beanInstanceName, String beanClassName)
    {
-      return new BeanMetaDataBuilderImpl(name, bean);
+      return new BeanMetaDataBuilderImpl(beanInstanceName, beanClassName);
    }
 
    /**

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -56,24 +56,24 @@
    /**
     * Create builder from bean.
     *
-    * @param bean bean class name
+    * @param beanClassName bean class name
     * @return new Builder
     */
-   public static BeanMetaDataBuilder createBuilder(String bean)
+   public static BeanMetaDataBuilder createBuilder(String beanClassName)
    {
-      return BeanMetaDataBuilderFactory.createBuilder(bean);
+      return BeanMetaDataBuilderFactory.createBuilder(beanClassName);
    }
 
    /**
     * Create builder from name and bean.
     *
-    * @param name bean name
-    * @param bean bean class name
+    * @param beanInstanceName bean name
+    * @param beanClassName bean class name
     * @return new Builder
     */
-   public static BeanMetaDataBuilder createBuilder(String name, String bean)
+   public static BeanMetaDataBuilder createBuilder(String beanInstanceName, String beanClassName)
    {
-      return BeanMetaDataBuilderFactory.createBuilder(name, bean);
+      return BeanMetaDataBuilderFactory.createBuilder(beanInstanceName, beanClassName);
    }
    
    /**

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/Kernel.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/Kernel.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/Kernel.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -27,6 +27,7 @@
 import org.jboss.kernel.spi.event.KernelEventManager;
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
 import org.jboss.kernel.spi.registry.KernelBus;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
 
 /**
  * The kernel.<p>
@@ -35,6 +36,7 @@
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @author <a href="mailto:les.hazlewood at jboss.org">Les A. Hazlewood</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  * @version $Revision$
  */
 @SuppressWarnings("deprecation")
@@ -70,12 +72,14 @@
    /** The kernel registry */
    protected org.jboss.kernel.spi.registry.KernelRegistry registry;
 
+   /** The kernel bean validator */
+   protected KernelBeanValidator validator;
+
    static
    {
       boolean checkingEnabled = false;
       try
       {
-         
          checkingEnabled = Boolean.getBoolean(KernelPermission.class.getName()); 
       }
       catch (Throwable ignored)
@@ -281,4 +285,28 @@
       checkConfigure();
       this.metaDataRepository = metaDataRepository;
    }
+
+   /**
+    * Get the kernel bean validator.
+    *
+    * @return the bean validator
+    * @throws SecurityException if the you don't have KernelPermission('access')
+    */
+   public KernelBeanValidator getValidator()
+   {
+      checkAccess();
+      return validator;
+   }
+
+   /**
+    * Set the bean validator.
+    *
+    * @param validator the bean validator.
+    * @throws SecurityException if the you don't have KernelPermission('configure')
+    */
+   public void setValidator(KernelBeanValidator validator)
+   {
+      checkConfigure();
+      this.validator = validator;
+   }
 }

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -32,11 +32,13 @@
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
 import org.jboss.kernel.spi.registry.KernelBus;
 import org.jboss.kernel.spi.registry.KernelRegistryEntry;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
 
 /**
  * Bootstrap the kernel.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision$
  */
 @SuppressWarnings("deprecation")
@@ -88,6 +90,12 @@
       bus.setKernel(kernel);
       kernel.setBus(bus);
 
+      KernelBeanValidator validator = createKernelBeanValidator(kernel);
+      if (trace)
+         log.trace("Using Validator: " + validator);
+      validator.setKernel(kernel);
+      kernel.setValidator(validator);
+
       // Register everything
       register(kernel, KernelConstants.KERNEL_CONFIG_NAME, kernel.getConfig());
       register(kernel, KernelConstants.KERNEL_INITIALIZER_NAME, this);
@@ -98,6 +106,7 @@
       register(kernel, KernelConstants.KERNEL_CONFIGURATOR_NAME, configurator);
       register(kernel, KernelConstants.KERNEL_CONTROLLER_NAME, controller);
       register(kernel, KernelConstants.KERNEL_METADATA_REPOSITORY_NAME, metaDataRepository);
+      register(kernel, KernelConstants.KERNEL_BEAN_VALIDATOR_NAME, validator);
    }
    
    /**
@@ -173,6 +182,18 @@
    }
 
    /**
+    * Create the bean validator
+    *
+    * @param kernel the kernel
+    * @return the bean validator
+    * @throws Throwable for any error
+    */
+   protected KernelBeanValidator createKernelBeanValidator(Kernel kernel) throws Throwable
+   {
+      return kernel.getConfig().createKernelBeanValidator();
+   }
+
+   /**
     * Register an object
     * 
     * @param kernel the kernel

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -28,6 +28,7 @@
 import org.jboss.kernel.spi.event.KernelEventManager;
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
 import org.jboss.kernel.spi.registry.KernelBus;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
 
 /**
  * Constants.<p>
@@ -49,7 +50,7 @@
    static final String KERNEL_BUS_PROPERTY = KernelBus.class.getName(); 
    
    /** The default kernel bus implementation */
-   static final String KERNEL_BUS_CLASS = "org.jboss.kernel.plugins.registry.basic.BasicKernelBus"; 
+   static final String KERNEL_BUS_CLASS = "org.jboss.kernel.plugins.registry.basic.LifecycleAwareKernelBus"; 
    
    /** The default kernel config name */
    static final String KERNEL_CONFIG_NAME = "jboss.kernel:service=KernelConfig"; 
@@ -108,9 +109,21 @@
    /** The default meta data repository implementation */
    static final String KERNEL_METADATA_REPOSITORY_CLASS = "org.jboss.kernel.plugins.metadata.basic.BasicKernelMetaDataRepository"; 
 
+   /** The kernel bean validator repository name */
+   static final String KERNEL_BEAN_VALIDATOR_NAME = "jboss.kernel:service=BeanValidator";
+
+   /** The kernel bean validator */
+   static final String KERNEL_BEAN_VALIDATOR_PROPERTY = KernelBeanValidator.class.getName();
+
+   /** The default meta data repository implementation */
+   static final String KERNEL_BEAN_VALIDATOR_CLASS = "org.jboss.kernel.plugins.validation.basic.BasicKernelBeanValidator";
+
+   /** The DependencyBuilder repository name */
+   static final String DEPENDENCY_BUILDER_NAME = "jboss.kernel:service=DependencyBuilder";
+   
    /** The DependencyBuilder property name */
-   static final String DEPENDENCY_BUILDER_NAME = DependencyBuilder.class.getName();
-   
+   static final String DEPENDENCY_BUILDER_PROPERTY = DependencyBuilder.class.getName();
+
    /** The DependencyBuilder default value */
-   static final String DEPENDENCY_BUILDER_DEFAULT="org.jboss.aop.microcontainer.integration.AOPDependencyBuilder:org.jboss.kernel.spi.dependency.helpers.AbstractDependencyBuilder";
+   static final String DEPENDENCY_BUILDER_DEFAULT = "org.jboss.aop.microcontainer.integration.AOPDependencyBuilder:org.jboss.kernel.spi.dependency.helpers.AbstractDependencyBuilder";
 }

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -39,6 +39,7 @@
 import org.jboss.kernel.spi.event.KernelEventManager;
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
 import org.jboss.kernel.spi.registry.KernelBus;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
 
 /**
  * Kernel configuration using properties.
@@ -138,11 +139,19 @@
          KernelConstants.KERNEL_METADATA_REPOSITORY_CLASS
       );
    }
-   
+
+   public KernelBeanValidator createKernelBeanValidator() throws Throwable
+   {
+      return (KernelBeanValidator) getImplementation(
+         KernelConstants.KERNEL_BEAN_VALIDATOR_PROPERTY,
+         KernelConstants.KERNEL_BEAN_VALIDATOR_CLASS
+      );
+   }
+
    public DependencyBuilder createDefaultDependencyBuilder() throws Throwable
    {
       return (DependencyBuilder) getImplementation(
-         KernelConstants.DEPENDENCY_BUILDER_NAME,
+         KernelConstants.DEPENDENCY_BUILDER_PROPERTY,
          KernelConstants.DEPENDENCY_BUILDER_DEFAULT
       );
    }

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -25,16 +25,21 @@
 import java.security.AccessController;
 import java.security.SecurityPermission;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.spi.AliasMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
 import org.jboss.dependency.plugins.AbstractControllerContext;
 import org.jboss.dependency.plugins.AbstractDependencyInfo;
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
 import org.jboss.dependency.spi.DependencyInfo;
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.dependency.spi.ErrorHandlingMode;
@@ -292,10 +297,99 @@
       SecurityManager sm = System.getSecurityManager();
       if (sm != null)
          sm.checkPermission(GET_CLASSLOADER_PERMISSION);
+
       return Configurator.getClassLoader(getBeanMetaData());
    }
 
+   // TODO - not the nicest impl with 4 trys, but what else can we do?
+   public ControllerState lifecycleInvocation(String name, Object[] parameters, String[] signature) throws Throwable
+   {
+      if (useLifecycleState(name, signature, metaData.getCreate(), "create"))
+      {
+         ControllerStateModel model = getController().getStates();
+         if (model.isAfterState(ControllerState.CREATE, getState()))
+            return ControllerState.CREATE;
+         else
+            return getState();
+      }
+
+      if (useLifecycleState(name, signature, metaData.getStart(), "start"))
+      {
+         ControllerStateModel model = getController().getStates();
+         if (model.isAfterState(ControllerState.START, getState()))
+            return ControllerState.START;
+         else
+            return getState();
+      }
+
+      if (useLifecycleState(name, signature, metaData.getStop(), "stop"))
+      {
+         ControllerStateModel model = getController().getStates();
+         if (model.isBeforeState(ControllerState.CREATE, getState()))
+            return ControllerState.CREATE;
+         else
+            return getState();
+      }
+
+      if (useLifecycleState(name, signature, metaData.getDestroy(), "destroy"))
+      {
+         ControllerStateModel model = getController().getStates();
+         if (model.isBeforeState(ControllerState.CONFIGURED, getState()))
+            return ControllerState.CONFIGURED;
+         else
+            return getState();
+      }
+
+      return null;
+   }
+
    /**
+    * Get lifecycle state if it matches the parameters.
+    *
+    * @param name the method name
+    * @param signature the signature
+    * @param lmd the lifecycle metadata
+    * @param defaultName the default name
+    * @return true if lifecycle matches, false otherwise
+    */
+   protected static boolean useLifecycleState(String name, String[] signature, LifecycleMetaData lmd, String defaultName)
+   {
+      if (lmd != null)
+      {
+         String methodName = lmd.getMethodName();
+         if (name.equals(methodName) || (methodName == null && name.equals(defaultName)))
+         {
+            List<ParameterMetaData> params = lmd.getParameters();
+            if (params != null)
+            {
+               if (signature != null && params.size() == signature.length)
+               {
+                  int i = 0;
+                  for (ParameterMetaData pmd : params)
+                  {
+                     String type = pmd.getType();
+                     if (type != null && signature[i] != null && type.equals(signature[i]) == false)
+                        return false; // we found a non match
+                     i++;
+                  }
+                  return true;
+               }
+            }
+            else if (signature == null || signature.length == 0)
+            {
+               return true;
+            }
+         }
+      }
+      else if (defaultName.equals(name) && (signature == null || signature.length == 0))
+      {
+         return true;
+      }
+
+      return false;
+   }
+
+   /**
     * Validate method invocation.
     * Use jsr303 constraints.
     *

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.kernel.plugins.dependency;
+
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.joinpoint.spi.Joinpoint;
+import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.reflect.spi.MethodInfo;
+
+/**
+ * Wrapper around kernel bean validator.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class KernelBeanValidatorBridge implements BeanValidatorBridge
+{
+   private KernelBeanValidator validator;
+
+   public KernelBeanValidatorBridge(KernelBeanValidator validator)
+   {
+      if (validator == null)
+         throw new IllegalArgumentException("Null validator");
+
+      this.validator = validator;
+   }
+
+   public void validateConstructorValues(KernelControllerContext context, Joinpoint joinpoint) throws Throwable
+   {
+      validator.validateConstructorValues(context, joinpoint);
+   }
+
+   public void validateInstance(KernelControllerContext context, Object target) throws Throwable
+   {
+      validator.validateInstance(context, target);
+   }
+
+   public void validatePropertyValue(KernelControllerContext context, Object target, PropertyInfo propertyInfo, Object value) throws Throwable
+   {
+      validator.validatePropertyValue(context, target, propertyInfo, value);
+   }
+
+   public void validateMethodValues(KernelControllerContext context, Object target, MethodInfo methodInfo, Object[] parameters) throws Throwable
+   {
+      validator.validateMethodValues(context, target, methodInfo, parameters);
+   }
+}

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -26,14 +26,15 @@
 
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.dependency.plugins.action.SimpleControllerContextAction;
-import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.joinpoint.spi.Joinpoint;
+import org.jboss.kernel.Kernel;
 import org.jboss.kernel.plugins.config.Configurator;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.spi.MetaData;
 import org.jboss.metadata.spi.stack.MetaDataStack;
@@ -42,6 +43,7 @@
  * KernelControllerContextAction.
  *
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision$
  */
 public class KernelControllerContextAction extends SimpleControllerContextAction<KernelControllerContext>
@@ -255,11 +257,15 @@
     */
    static BeanValidatorBridge getBeanValidatorBridge(KernelControllerContext context)
    {
-      Controller controller = context.getController();
+      KernelController controller = (KernelController)context.getController();
       if (controller == null)
          return null;
 
-      ControllerContext bridge = controller.getInstalledContext(BeanValidatorBridge.class);
-      return bridge != null ? BeanValidatorBridge.class.cast(bridge.getTarget()) : null;
+      Kernel kernel = controller.getKernel();
+      KernelBeanValidator validator = kernel.getValidator();
+      if (validator == null || validator.isDisabled())
+         return null;
+
+      return new KernelBeanValidatorBridge(validator);
    }
 }
\ No newline at end of file

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/BasicKernelBus.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/BasicKernelBus.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/BasicKernelBus.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -49,8 +49,25 @@
       ControllerContext context = controller.getInstalledContext(name);
       if (context == null)
          throw new IllegalArgumentException("No such context: " + name);
+      
+      return execute(context, clazz, dispatcher);
+   }
+
+   /**
+    * Execute dispatch.
+    *
+    * @param <T> exact context type
+    * @param context the context
+    * @param clazz the context class
+    * @param dispatcher the dispatcher
+    * @return dispatcher's result
+    * @throws Throwable for any error
+    */
+   protected <T> Object execute(ControllerContext context, Class<T> clazz, Dispatcher<T> dispatcher) throws Throwable
+   {
       if (clazz.isAssignableFrom(context.getClass()) == false)
          throw new IllegalArgumentException("Cannot execute " + dispatcher + " on non " + clazz.getSimpleName() + " context: " + context);
+
       return dispatcher.dispatch(clazz.cast(context));
    }
 
@@ -108,7 +125,7 @@
     *
     * @param <T> exact context type
     */
-   private interface Dispatcher<T>
+   protected interface Dispatcher<T>
    {
       /**
        * Invoke simple dispatcher.

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/LifecycleAwareKernelBus.java (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/LifecycleAwareKernelBus.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/LifecycleAwareKernelBus.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/registry/basic/LifecycleAwareKernelBus.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,76 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.kernel.plugins.registry.basic;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.dispatch.LifecycleDispatchContext;
+import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
+
+/**
+ * A kernel bus that understands lifecycle invocation.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class LifecycleAwareKernelBus extends BasicKernelBus
+{
+   public Object invoke(Object name, final String methodName, final Object parameters[], final String[] signature) throws Throwable
+   {
+      ControllerContext context = controller.getContext(name, null);
+      if (context == null)
+         throw new IllegalArgumentException("No such context: " + name);
+
+      if (context instanceof LifecycleDispatchContext)
+      {
+         LifecycleDispatchContext ldc = (LifecycleDispatchContext)context;
+         ControllerState state = ldc.lifecycleInvocation(methodName, parameters, signature);
+         if (state != null)
+         {
+            if (state.equals(context.getState()) == false)
+               controller.change(context, state);
+            
+            return null;
+         }
+      }
+
+      if (ControllerState.INSTALLED.equals(context.getState()))
+      {
+         return execute(context, InvokeDispatchContext.class, new Dispatcher<InvokeDispatchContext>()
+         {
+            public Object dispatch(InvokeDispatchContext dispatchContext) throws Throwable
+            {
+               return dispatchContext.invoke(methodName, parameters, signature);
+            }
+
+            @Override
+            public String toString()
+            {
+               return "invoke";
+            }
+         });
+      }
+      else
+      {
+         throw new IllegalArgumentException("The invocation is not a lifecycle invocation or context is not fully installed: " + context);
+      }
+   }
+}
\ No newline at end of file

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation)

Deleted: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java	2009-05-29 07:56:59 UTC (rev 89523)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -1,88 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.kernel.plugins.validation;
-
-import org.jboss.beans.info.spi.PropertyInfo;
-import org.jboss.joinpoint.spi.Joinpoint;
-import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.AbstractKernelObject;
-import org.jboss.kernel.plugins.dependency.BeanValidatorBridge;
-import org.jboss.kernel.spi.dependency.KernelController;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.kernel.spi.validation.KernelBeanValidator;
-import org.jboss.reflect.spi.MethodInfo;
-
-/**
- * Abstract kernel bean validator.
- * 
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public abstract class AbstractKernelBeanValidator extends AbstractKernelObject implements KernelBeanValidator
-{
-   protected KernelController controller;
-
-   @Override
-   public void setKernel(Kernel kernel) throws Throwable
-   {
-      super.setKernel(kernel);
-      controller = kernel.getController();
-   }
-
-   /**
-    * Get validator bridge delegate as a plain installed bean.
-    *
-    * @return the delegate if exists, or null
-    */
-   protected BeanValidatorBridge getDelegate()
-   {
-      KernelControllerContext context = controller.getContextByClass(BeanValidatorBridge.class);
-      return context != null ? BeanValidatorBridge.class.cast(context.getTarget()) : null;
-   }
-
-   public void validateConstructorValues(KernelControllerContext context, Joinpoint joinpoint) throws Throwable
-   {
-      BeanValidatorBridge delegate = getDelegate();
-      if (delegate != null)
-         delegate.validateConstructorValues(context, joinpoint);
-   }
-
-   public void validateInstance(KernelControllerContext context, Object target) throws Throwable
-   {
-      BeanValidatorBridge delegate = getDelegate();
-      if (delegate != null)
-         delegate.validateInstance(context, target);
-   }
-
-   public void validatePropertyValue(KernelControllerContext context, Object target, PropertyInfo propertyInfo, Object value) throws Throwable
-   {
-      BeanValidatorBridge delegate = getDelegate();
-      if (delegate != null)
-         delegate.validatePropertyValue(context, target, propertyInfo, value);
-   }
-
-   public void validateMethodValues(KernelControllerContext context, Object target, MethodInfo methodInfo, Object[] parameters) throws Throwable
-   {
-      BeanValidatorBridge delegate = getDelegate();
-      if (delegate != null)
-         delegate.validateMethodValues(context, target, methodInfo, parameters);
-   }
-}

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,88 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.kernel.plugins.validation;
+
+import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.joinpoint.spi.Joinpoint;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.AbstractKernelObject;
+import org.jboss.kernel.plugins.dependency.BeanValidatorBridge;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
+import org.jboss.reflect.spi.MethodInfo;
+
+/**
+ * Abstract kernel bean validator.
+ * 
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public abstract class AbstractKernelBeanValidator extends AbstractKernelObject implements KernelBeanValidator
+{
+   protected KernelController controller;
+
+   @Override
+   public void setKernel(Kernel kernel) throws Throwable
+   {
+      super.setKernel(kernel);
+      controller = kernel.getController();
+   }
+
+   /**
+    * Get validator bridge delegate as a plain installed bean.
+    *
+    * @return the delegate if exists, or null
+    */
+   protected BeanValidatorBridge getDelegate()
+   {
+      KernelControllerContext context = controller.getContextByClass(BeanValidatorBridge.class);
+      return context != null ? BeanValidatorBridge.class.cast(context.getTarget()) : null;
+   }
+
+   public void validateConstructorValues(KernelControllerContext context, Joinpoint joinpoint) throws Throwable
+   {
+      BeanValidatorBridge delegate = getDelegate();
+      if (delegate != null)
+         delegate.validateConstructorValues(context, joinpoint);
+   }
+
+   public void validateInstance(KernelControllerContext context, Object target) throws Throwable
+   {
+      BeanValidatorBridge delegate = getDelegate();
+      if (delegate != null)
+         delegate.validateInstance(context, target);
+   }
+
+   public void validatePropertyValue(KernelControllerContext context, Object target, PropertyInfo propertyInfo, Object value) throws Throwable
+   {
+      BeanValidatorBridge delegate = getDelegate();
+      if (delegate != null)
+         delegate.validatePropertyValue(context, target, propertyInfo, value);
+   }
+
+   public void validateMethodValues(KernelControllerContext context, Object target, MethodInfo methodInfo, Object[] parameters) throws Throwable
+   {
+      BeanValidatorBridge delegate = getDelegate();
+      if (delegate != null)
+         delegate.validateMethodValues(context, target, methodInfo, parameters);
+   }
+}

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic)

Deleted: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java	2009-05-29 07:56:59 UTC (rev 89523)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -1,87 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.kernel.plugins.validation.basic;
-
-import java.security.PrivilegedAction;
-import java.security.AccessController;
-
-import org.jboss.kernel.plugins.validation.AbstractKernelBeanValidator;
-import org.jboss.kernel.Kernel;
-import org.jboss.kernel.spi.validation.KernelBeanValidator;
-
-/**
- * Basic impl of kernel bean validator.
- * By default it's disabled.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public class BasicKernelBeanValidator extends AbstractKernelBeanValidator
-{
-   public static final String DISABLED_PROPERTY_KEY = KernelBeanValidator.class.getSimpleName() + ".disabled";
-
-   private boolean disabled;
-
-   @Override
-   public void setKernel(Kernel kernel) throws Throwable
-   {
-      super.setKernel(kernel);
-      // read the disabled flag
-      SecurityManager sm = System.getSecurityManager();
-      if (sm != null)
-         disabled = AccessController.doPrivileged(new DisabledFlagReader());
-      else
-         disabled = readDisabledFlag();
-   }
-
-   public boolean isDisabled()
-   {
-      return disabled;
-   }
-
-   /**
-    * Set the disabled flag.
-    *
-    * @param disabled the disabled flag
-    */
-   public void setDisabled(boolean disabled)
-   {
-      this.disabled = disabled;
-   }
-
-   /**
-    * Read the disabled flag.
-    *
-    * @return the system property flag read
-    */
-   protected static boolean readDisabledFlag()
-   {
-      return Boolean.parseBoolean(System.getProperty(DISABLED_PROPERTY_KEY, "true"));
-   }
-
-   private class DisabledFlagReader implements PrivilegedAction<Boolean>
-   {
-      public Boolean run()
-      {
-         return readDisabledFlag();
-      }
-   }
-}

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,87 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.kernel.plugins.validation.basic;
+
+import java.security.PrivilegedAction;
+import java.security.AccessController;
+
+import org.jboss.kernel.plugins.validation.AbstractKernelBeanValidator;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
+
+/**
+ * Basic impl of kernel bean validator.
+ * By default it's disabled.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class BasicKernelBeanValidator extends AbstractKernelBeanValidator
+{
+   public static final String DISABLED_PROPERTY_KEY = KernelBeanValidator.class.getSimpleName() + ".disabled";
+
+   private boolean disabled;
+
+   @Override
+   public void setKernel(Kernel kernel) throws Throwable
+   {
+      super.setKernel(kernel);
+      // read the disabled flag
+      SecurityManager sm = System.getSecurityManager();
+      if (sm != null)
+         disabled = AccessController.doPrivileged(new DisabledFlagReader());
+      else
+         disabled = readDisabledFlag();
+   }
+
+   public boolean isDisabled()
+   {
+      return disabled;
+   }
+
+   /**
+    * Set the disabled flag.
+    *
+    * @param disabled the disabled flag
+    */
+   public void setDisabled(boolean disabled)
+   {
+      this.disabled = disabled;
+   }
+
+   /**
+    * Read the disabled flag.
+    *
+    * @return the system property flag read
+    */
+   protected static boolean readDisabledFlag()
+   {
+      return Boolean.parseBoolean(System.getProperty(DISABLED_PROPERTY_KEY, "true"));
+   }
+
+   private class DisabledFlagReader implements PrivilegedAction<Boolean>
+   {
+      public Boolean run()
+      {
+         return readDisabledFlag();
+      }
+   }
+}

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -21,9 +21,10 @@
 */
 package org.jboss.kernel.spi.config;
 
+import org.jboss.beans.info.spi.BeanAccessMode;
 import org.jboss.beans.info.spi.BeanInfo;
-import org.jboss.beans.info.spi.BeanAccessMode;
 import org.jboss.kernel.spi.KernelObject;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
 import org.jboss.kernel.spi.bootstrap.KernelInitializer;
 import org.jboss.kernel.spi.dependency.DependencyBuilder;
 import org.jboss.kernel.spi.dependency.KernelController;
@@ -197,8 +198,16 @@
     * @throws Throwable for any error
     */
    KernelMetaDataRepository createKernelMetaDataRepository() throws Throwable;
-   
+
    /**
+    * Create kernel bean validator.
+    *
+    * @return the kernel bean validator
+    * @throws Throwable for any error
+    */
+   KernelBeanValidator createKernelBeanValidator() throws Throwable;
+
+   /**
     * Get the dependency builder
     * 
     * @return the dependency builder

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -23,7 +23,7 @@
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.dependency.spi.dispatch.InvokeDispatchContext;
+import org.jboss.dependency.spi.dispatch.LifecycleDispatchContext;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.registry.KernelRegistryEntry;
 
@@ -33,7 +33,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
-public interface KernelControllerContext extends KernelRegistryEntry, InvokeDispatchContext
+public interface KernelControllerContext extends KernelRegistryEntry, LifecycleDispatchContext
 {
    /**
     * Get the kernel

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -25,6 +25,7 @@
 import org.jboss.beans.info.spi.helpers.UnmodifiableBeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.dependency.spi.helpers.UnmodifiableControllerContext;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 
@@ -95,4 +96,9 @@
    {
       throw new UnsupportedOperationException("Cannot execute set on unmodifiable wrapper.");
    }
+
+   public ControllerState lifecycleInvocation(String name, Object[] parameters, String[] signature) throws Throwable
+   {
+      return null;
+   }
 }

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation)

Deleted: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java	2009-05-29 07:56:59 UTC (rev 89523)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -1,83 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.kernel.spi.validation;
-
-import org.jboss.beans.info.spi.PropertyInfo;
-import org.jboss.joinpoint.spi.Joinpoint;
-import org.jboss.kernel.spi.KernelObject;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.reflect.spi.MethodInfo;
-
-/**
- * The bridge between jsr303 and our pojo handling.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public interface KernelBeanValidator extends KernelObject
-{
-   /**
-    * Is the validator disabled.
-    *
-    * @return is the validator disabled
-    */
-   boolean isDisabled();
-
-   /**
-    * Validate constructor values.
-    *
-    * @param context the owner context
-    * @param joinpoint the constructor joinpoint
-    * @throws Throwable for any error
-    */
-   void validateConstructorValues(KernelControllerContext context, Joinpoint joinpoint) throws Throwable;
-
-   /**
-    * Validate new instance.
-    *
-    * @param context the owner context
-    * @param target the target
-    * @throws Throwable for any error
-    */
-   void validateInstance(KernelControllerContext context, Object target) throws Throwable;
-
-   /**
-    * Validate property value.
-    *
-    * @param context the owner context
-    * @param target the target
-    * @param propertyInfo the property
-    * @param value the new value
-    * @throws Throwable for any error
-    */
-   void validatePropertyValue(KernelControllerContext context, Object target, PropertyInfo propertyInfo, Object value) throws Throwable;
-
-   /**
-    * Validate method values.
-    *
-    * @param context the owner context
-    * @param target the target
-    * @param methodInfo the method
-    * @param parameters the parameters
-    * @throws Throwable for any error
-    */
-   void validateMethodValues(KernelControllerContext context, Object target, MethodInfo methodInfo, Object[] parameters) throws Throwable;
-}

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java (from rev 89523, projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.kernel.spi.validation;
+
+import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.joinpoint.spi.Joinpoint;
+import org.jboss.kernel.spi.KernelObject;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.reflect.spi.MethodInfo;
+
+/**
+ * The bridge between jsr303 and our pojo handling.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public interface KernelBeanValidator extends KernelObject
+{
+   /**
+    * Is the validator disabled.
+    *
+    * @return is the validator disabled
+    */
+   boolean isDisabled();
+
+   /**
+    * Validate constructor values.
+    *
+    * @param context the owner context
+    * @param joinpoint the constructor joinpoint
+    * @throws Throwable for any error
+    */
+   void validateConstructorValues(KernelControllerContext context, Joinpoint joinpoint) throws Throwable;
+
+   /**
+    * Validate new instance.
+    *
+    * @param context the owner context
+    * @param target the target
+    * @throws Throwable for any error
+    */
+   void validateInstance(KernelControllerContext context, Object target) throws Throwable;
+
+   /**
+    * Validate property value.
+    *
+    * @param context the owner context
+    * @param target the target
+    * @param propertyInfo the property
+    * @param value the new value
+    * @throws Throwable for any error
+    */
+   void validatePropertyValue(KernelControllerContext context, Object target, PropertyInfo propertyInfo, Object value) throws Throwable;
+
+   /**
+    * Validate method values.
+    *
+    * @param context the owner context
+    * @param target the target
+    * @param methodInfo the method
+    * @param parameters the parameters
+    * @throws Throwable for any error
+    */
+   void validateMethodValues(KernelControllerContext context, Object target, MethodInfo methodInfo, Object[] parameters) throws Throwable;
+}

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/main/resources/schema/jboss-beans-common_2_0.xsd
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/main/resources/schema/jboss-beans-common_2_0.xsd	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/main/resources/schema/jboss-beans-common_2_0.xsd	2009-06-17 12:14:18 UTC (rev 90317)
@@ -26,9 +26,9 @@
          </xsd:documentation>
       </xsd:annotation>
       <xsd:sequence>
-         <xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="alias" type="aliasType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="related-class" type="relatedClassType" minOccurs="0" maxOccurs="unbounded"/>
+         <xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="classloader" type="classloaderType" minOccurs="0"/>
          <xsd:element name="constructor" type="constructorType" minOccurs="0"/>
          <xsd:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded"/>

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -25,7 +25,9 @@
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.validation.basic.BasicKernelBeanValidator;
 import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.validation.KernelBeanValidator;
 import org.jboss.test.kernel.AbstractKernelTest;
 import org.jboss.test.kernel.dependency.support.BVBTester;
 import org.jboss.test.kernel.dependency.support.MockBeanValidatorBridge;
@@ -51,18 +53,28 @@
    {
       Kernel kernel = bootstrap();
       KernelController controller = kernel.getController();
+      KernelBeanValidator validator = kernel.getValidator();
+      BasicKernelBeanValidator bkbv = assertInstanceOf(validator, BasicKernelBeanValidator.class);
+      bkbv.setDisabled(false);
 
-      MockBeanValidatorBridge bridge = new MockBeanValidatorBridge();
-      controller.install(new AbstractBeanMetaData("bvb", MockBeanValidatorBridge.class.getName()), bridge);
+      try
+      {
+         MockBeanValidatorBridge bridge = new MockBeanValidatorBridge();
+         controller.install(new AbstractBeanMetaData("bvb", MockBeanValidatorBridge.class.getName()), bridge);
 
-      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("tester", BVBTester.class.getName());
-      builder.addPropertyMetaData("something", 123);
-      builder.addInstall("invokeSomething", Object.class.getName(), "123");
-      controller.install(builder.getBeanMetaData());
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("tester", BVBTester.class.getName());
+         builder.addPropertyMetaData("something", 123);
+         builder.addInstall("invokeSomething", Object.class.getName(), "123");
+         controller.install(builder.getBeanMetaData());
 
-      assertNotNull(bridge.getJoinpoint());
-      assertInstanceOf(bridge.getTarget(), BVBTester.class);
-      assertEquals("something", bridge.getProperty());
-      assertEquals("invokeSomething", bridge.getMethod());
+         assertNotNull(bridge.getJoinpoint());
+         assertInstanceOf(bridge.getTarget(), BVBTester.class);
+         assertEquals("something", bridge.getProperty());
+         assertEquals("invokeSomething", bridge.getMethod());
+      }
+      finally
+      {
+         bkbv.setDisabled(true);
+      }
    }
 }

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/GenericBeanFactoryOnDemandDependencyTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -63,7 +63,7 @@
    {
       onDemandDependencyOnDemandFirst();
 
-      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.NOT_INSTALLED);
+      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.DESCRIBED);
       ControllerContext context2 = assertInstall(1, "Name2");
       assertContext("Name1");
       
@@ -113,7 +113,7 @@
    {
       onDemandDependencyReinstall();
 
-      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.NOT_INSTALLED);
+      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.DESCRIBED);
       ControllerContext context2 = assertInstall(1, "Name2");
       assertContext("Name1");
       

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/dependency/test/OnDemandDependencyTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -65,7 +65,7 @@
    {
       onDemandDependencyOnDemandFirst();
 
-      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.NOT_INSTALLED);
+      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.DESCRIBED);
       ControllerContext context2 = assertInstall(1, "Name2");
       assertContext("Name1");
       
@@ -111,7 +111,7 @@
    {
       onDemandDependencyReinstall();
 
-      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.NOT_INSTALLED);
+      ControllerContext context1 = assertInstall(0, "Name1", ControllerState.DESCRIBED);
       ControllerContext context2 = assertInstall(1, "Name2");
       assertContext("Name1");
       

Copied: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/support/RareBeanHolder.java (from rev 89523, projects/microcontainer/trunk/kernel/src/test/java/org/jboss/test/kernel/lazy/support/RareBeanHolder.java)
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/support/RareBeanHolder.java	                        (rev 0)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/support/RareBeanHolder.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -0,0 +1,50 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.lazy.support;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class RareBeanHolder implements IRare
+{
+   private IRare delegate;
+
+   public RareBeanHolder(IRare delegate)
+   {
+      this.delegate = delegate;
+   }
+
+   public int getHits()
+   {
+      return delegate.getHits();
+   }
+
+   public void setHits(int hits)
+   {
+      delegate.setHits(hits);
+   }
+
+   public int checkHits(int expectedHits)
+   {
+      return delegate.checkHits(expectedHits);
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyInstantiationTest.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -135,7 +135,7 @@
          assertNotNull(lazyRare);
 
          // should not be fully installed yet
-         assertEquals(ControllerState.NOT_INSTALLED, beanContext.getState());
+         assertEquals(ControllerState.DESCRIBED, beanContext.getState());
          assertEquals(0, lazyRare.getHits());
          // the hit should install it
          assertEquals(ControllerState.INSTALLED, beanContext.getState());

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -59,5 +59,9 @@
       assertEquals(bean.getHits(), rare.getHits());
       bean.setHits(321);
       assertEquals(bean.getHits(), rare.getHits());
+
+      Object holder = getBean("holder");
+      assertNotNull(holder);
+      assertInstanceOf(holder, IRare.class);
    }
 }

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/support/BusBean.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/support/BusBean.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/support/BusBean.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -21,6 +21,8 @@
 */
 package org.jboss.test.kernel.registry.support;
 
+import java.util.Date;
+
 /**
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -37,4 +39,25 @@
    {
       this.value = value;
    }
+
+   public void create()
+   {
+      System.out.println("Created");
+   }
+
+   public void start(String msg)
+   {
+      System.out.println("msg = " + msg);
+   }
+
+   public void doStop()
+   {
+      System.out.println("doStop");
+   }
+
+   public void executeDestroy(int exit, Date date)
+   {
+      System.out.println("exit = " + exit);
+      System.out.println("date = " + date);
+   }
 }

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/test/BusTestCase.java
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/test/BusTestCase.java	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/java/org/jboss/test/kernel/registry/test/BusTestCase.java	2009-06-17 12:14:18 UTC (rev 90317)
@@ -21,13 +21,20 @@
 */
 package org.jboss.test.kernel.registry.test;
 
+import java.util.Date;
+
 import junit.framework.Test;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext;
+import org.jboss.kernel.plugins.registry.basic.LifecycleAwareKernelBus;
+import org.jboss.kernel.spi.config.KernelConfigurator;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.kernel.spi.registry.KernelBus;
 import org.jboss.kernel.spi.registry.KernelRegistryEntry;
-import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.test.kernel.AbstractKernelTest;
 import org.jboss.test.kernel.registry.support.BusBean;
 
@@ -35,7 +42,7 @@
  * Bus Test Case.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision$
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
 @SuppressWarnings("deprecation")
 public class BusTestCase extends AbstractKernelTest
@@ -56,6 +63,7 @@
       org.jboss.kernel.spi.registry.KernelRegistry registry = kernel.getRegistry();
       KernelConfigurator configurator = kernel.getConfigurator();
       registry.registerEntry("Bus", makeContext(configurator, "Name1", new BusBean()));
+
       KernelBus bus = kernel.getBus();
       Object result1 = bus.get("Bus", "value");
       assertNull("Result 1", result1);
@@ -69,8 +77,15 @@
       Kernel kernel = bootstrap();
       org.jboss.kernel.spi.registry.KernelRegistry registry = kernel.getRegistry();
       KernelConfigurator configurator = kernel.getConfigurator();
-      registry.registerEntry("Name1", makeContext(configurator, "Name1", "A string"));
-      registry.registerEntry("Name2", makeContext(configurator, "Name2", "B string"));
+
+      KernelRegistryEntry entry1 = makeContext(configurator, "Name1", "A string");
+      entry1.setState(ControllerState.INSTALLED);
+      registry.registerEntry("Name1", entry1);
+
+      KernelRegistryEntry entry2 = makeContext(configurator, "Name2", "B string");
+      entry2.setState(ControllerState.INSTALLED);
+      registry.registerEntry("Name2", entry2);
+
       KernelBus bus = kernel.getBus();
       Object result1 = bus.invoke("Name1", "toString", new Object[]{}, new String[]{});
       Object result2 = bus.invoke("Name2", "toString", new Object[]{}, new String[]{});
@@ -78,6 +93,37 @@
       assertEquals("B string", result2);
    }
 
+   public void testLifecycle() throws Throwable
+   {
+      Kernel kernel = bootstrap();
+      KernelController controller = kernel.getController();
+
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Name1", BusBean.class.getName());
+      builder.addStartParameter(String.class.getName(), "123-Start");
+      builder.setStop("doStop");
+      builder.setDestroy("executeDestroy");
+      builder.addDestroyParameter("int", 123);
+      builder.addDestroyParameter(Date.class.getName(), new Date());
+
+      KernelControllerContext context = controller.install(builder.getBeanMetaData());
+      assertEquals(ControllerState.INSTALLED, context.getState());
+
+      KernelBus bus = kernel.getBus();
+      assertInstanceOf(bus, LifecycleAwareKernelBus.class);
+
+      bus.invoke("Name1", "executeDestroy", new Object[]{-1, new Date()}, new String[]{int.class.getName(), Date.class.getName()});
+      assertEquals(ControllerState.CONFIGURED, context.getState());
+
+      bus.invoke("Name1", "create", null, null);
+      assertEquals(ControllerState.CREATE, context.getState());
+
+      bus.invoke("Name1", "start", new Object[]{"foobar"}, new String[]{String.class.getName()});
+      assertEquals(ControllerState.START, context.getState());
+
+      bus.invoke("Name1", "doStop", null, null);
+      assertEquals(ControllerState.CREATE, context.getState());     
+   }
+
    protected static KernelRegistryEntry makeContext(KernelConfigurator configurator, String name, Object target)
          throws Throwable
    {

Modified: projects/microcontainer/branches/Branch_2_0/kernel/src/test/resources/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.xml
===================================================================
--- projects/microcontainer/branches/Branch_2_0/kernel/src/test/resources/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.xml	2009-06-17 11:48:08 UTC (rev 90316)
+++ projects/microcontainer/branches/Branch_2_0/kernel/src/test/resources/org/jboss/test/kernel/lazy/test/LazyMetaDataTestCase.xml	2009-06-17 12:14:18 UTC (rev 90317)
@@ -4,10 +4,20 @@
             xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_2_0.xsd"
             xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="bean" class="org.jboss.test.kernel.lazy.support.RareBean"/>
+  <bean name="bean" class="org.jboss.test.kernel.lazy.support.RareBean"/>
 
-   <lazy name="proxy" bean="bean" exposeClass="true">
-      <interface>org.jboss.test.kernel.lazy.support.IRare</interface>
-   </lazy>
+  <lazy name="proxy" bean="bean" exposeClass="true">
+    <interface>org.jboss.test.kernel.lazy.support.IRare</interface>
+  </lazy>
 
+  <bean name="holder" class="org.jboss.test.kernel.lazy.support.RareBeanHolder">
+    <constructor>
+      <parameter>
+        <lazy bean="bean" exposeClass="true">
+          <interface>org.jboss.test.kernel.lazy.support.IRare</interface>
+        </lazy>
+      </parameter>
+    </constructor>
+  </bean>
+
 </deployment>




More information about the jboss-cvs-commits mailing list