[jboss-cvs] JBossAS SVN: r73534 - in projects/microcontainer/trunk/kernel/src: tests/org/jboss/test/kernel/dependency/support and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue May 20 12:11:12 EDT 2008


Author: alesj
Date: 2008-05-20 12:11:12 -0400 (Tue, 20 May 2008)
New Revision: 73534

Added:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AutowireAction.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/BVBTester.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/MockBeanValidatorBridge.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java
Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextActions.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/DependencyTestSuite.java
Log:
Bean validation test.
Autowire bug fix.

Copied: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AutowireAction.java (from rev 73531, projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AutowireAction.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AutowireAction.java	2008-05-20 16:11:12 UTC (rev 73534)
@@ -0,0 +1,70 @@
+/*
+* 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.dependency;
+
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyInfo;
+import org.jboss.kernel.spi.dependency.InstantiateKernelControllerContextAware;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
+
+/**
+ * AutowireAction.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class AutowireAction extends InstallsAwareAction
+{
+   protected void installActionInternal(KernelControllerContext context) throws Throwable
+   {
+      KernelController controller = (KernelController)context.getController();
+      DependencyInfo dependencyInfo = context.getDependencyInfo();
+      if (dependencyInfo != null && dependencyInfo.isAutowireCandidate())
+         controller.addInstantiatedContext(context);
+   }
+
+   protected void uninstallActionInternal(KernelControllerContext context)
+   {
+      try
+      {
+         KernelController controller = (KernelController)context.getController();
+         DependencyInfo dependencyInfo = context.getDependencyInfo();
+         if (dependencyInfo != null && dependencyInfo.isAutowireCandidate())
+            controller.removeInstantiatedContext(context);
+      }
+      catch (Throwable ignored)
+      {
+         log.debug("Ignored error unsetting context ", ignored);
+      }
+   }
+
+   protected ControllerState getState()
+   {
+      return ControllerState.INSTANTIATED;
+   }
+
+   protected Class<? extends KernelControllerContextAware> getActionAwareInterface()
+   {
+      return InstantiateKernelControllerContextAware.class;
+   }
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java	2008-05-20 14:49:48 UTC (rev 73533)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java	2008-05-20 16:11:12 UTC (rev 73534)
@@ -105,14 +105,10 @@
    {
       try
       {
-         Object object = context.getTarget();
-         if (object != null)
-         {
-            KernelController controller = (KernelController) context.getController();
-            DependencyInfo dependencyInfo = context.getDependencyInfo();
-            if (dependencyInfo != null && dependencyInfo.isAutowireCandidate())
-               controller.removeInstantiatedContext(context);
-         }
+         KernelController controller = (KernelController)context.getController();
+         DependencyInfo dependencyInfo = context.getDependencyInfo();
+         if (dependencyInfo != null && dependencyInfo.isAutowireCandidate())
+            controller.removeInstantiatedContext(context);
       }
       catch (Throwable ignored)
       {

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextActions.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextActions.java	2008-05-20 14:49:48 UTC (rev 73533)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/KernelControllerContextActions.java	2008-05-20 16:11:12 UTC (rev 73534)
@@ -81,6 +81,7 @@
          Map<ControllerState, ControllerContextAction> actions = new HashMap<ControllerState, ControllerContextAction>();
          actions.put(ControllerState.PRE_INSTALL, new PreInstallAction());
          actions.put(ControllerState.DESCRIBED, new DescribeAction());
+         actions.put(ControllerState.INSTANTIATED, new AutowireAction());
          actions.put(ControllerState.CONFIGURED, new ConfigureAction());
          actions.put(ControllerState.CREATE, new CreateDestroyLifecycleAction());
          actions.put(ControllerState.START, new StartStopLifecycleAction());

Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/BVBTester.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/BVBTester.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/BVBTester.java	2008-05-20 16:11:12 UTC (rev 73534)
@@ -0,0 +1,35 @@
+/*
+* 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.dependency.support;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BVBTester
+{
+   public void setSomething(Object object)
+   {
+   }
+   public void invokeSomething(Object object)
+   {
+   }
+}
\ No newline at end of file

Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/MockBeanValidatorBridge.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/MockBeanValidatorBridge.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/support/MockBeanValidatorBridge.java	2008-05-20 16:11:12 UTC (rev 73534)
@@ -0,0 +1,79 @@
+/*
+* 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.dependency.support;
+
+import org.jboss.kernel.plugins.dependency.BeanValidatorBridge;
+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;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class MockBeanValidatorBridge implements BeanValidatorBridge
+{
+   private Joinpoint joinpoint;
+   private Object target;
+   private String property;
+   private String method;
+
+   public Joinpoint getJoinpoint()
+   {
+      return joinpoint;
+   }
+
+   public Object getTarget()
+   {
+      return target;
+   }
+
+   public String getProperty()
+   {
+      return property;
+   }
+
+   public String getMethod()
+   {
+      return method;
+   }
+
+   public void validateConstructorValues(KernelControllerContext context, Joinpoint joinpoint) throws Throwable
+   {
+      this.joinpoint = joinpoint;
+   }
+
+   public void validateInstance(KernelControllerContext context, Object target) throws Throwable
+   {
+      this.target = target;
+   }
+
+   public void validatePropertyValue(KernelControllerContext context, Object target, PropertyInfo propertyInfo, Object value) throws Throwable
+   {
+      property = propertyInfo.getName();
+   }
+
+   public void validateMethodValues(KernelControllerContext context, Object target, MethodInfo methodInfo, Object[] parameters) throws Throwable
+   {
+      method = methodInfo.getName();
+   }
+}

Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java	2008-05-20 16:11:12 UTC (rev 73534)
@@ -0,0 +1,68 @@
+/*
+* 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.dependency.test;
+
+import junit.framework.Test;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.test.kernel.AbstractKernelTest;
+import org.jboss.test.kernel.dependency.support.BVBTester;
+import org.jboss.test.kernel.dependency.support.MockBeanValidatorBridge;
+
+/**
+ * BVB test.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BeanValidatorBridgeTestCase extends AbstractKernelTest
+{
+   public BeanValidatorBridgeTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(BeanValidatorBridgeTestCase.class);
+   }
+
+   public void testBVBLookup() throws Throwable
+   {
+      Kernel kernel = bootstrap();
+      KernelController controller = kernel.getController();
+
+      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());
+
+      assertNotNull(bridge.getJoinpoint());
+      assertInstanceOf(bridge.getTarget(), BVBTester.class);
+      assertEquals("something", bridge.getProperty());
+      assertEquals("invokeSomething", bridge.getMethod());
+   }
+}

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/DependencyTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/DependencyTestSuite.java	2008-05-20 14:49:48 UTC (rev 73533)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/dependency/test/DependencyTestSuite.java	2008-05-20 16:11:12 UTC (rev 73534)
@@ -110,6 +110,7 @@
       suite.addTest(MatcherDemandSupplyAnnotationTestCase.suite());
       suite.addTest(NestedPropertyTestCase.suite());
       suite.addTest(NestedPropertyXMLTestCase.suite());
+      suite.addTest(BeanValidatorBridgeTestCase.suite());      
       return suite;
    }
 }




More information about the jboss-cvs-commits mailing list