[jboss-cvs] JBossAS SVN: r89462 - in projects/microcontainer/trunk/kernel/src: main/java/org/jboss/kernel/plugins and 9 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed May 27 08:27:08 EDT 2009


Author: alesj
Date: 2009-05-27 08:27:08 -0400 (Wed, 27 May 2009)
New Revision: 89462

Added:
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java
Modified:
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java
   projects/microcontainer/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java
Log:
[JBKERNEL-33]; optimize validator usage.

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java	2009-05-27 12:01:13 UTC (rev 89461)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/Kernel.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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,27 @@
       checkConfigure();
       this.metaDataRepository = metaDataRepository;
    }
+
+   /**
+    * Get the kernel bean validator.
+    *
+    * @return the bean validator
+    * @throws SecurityException if the you don't have KernelPermission('configure')
+    */
+   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)
+   {
+      this.validator = validator;
+   }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java	2009-05-27 12:01:13 UTC (rev 89461)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/BasicKernelInitializer.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java	2009-05-27 12:01:13 UTC (rev 89461)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/bootstrap/basic/KernelConstants.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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>
@@ -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/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java	2009-05-27 12:01:13 UTC (rev 89461)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/config/property/PropertyKernelConfig.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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
       );
    }

Added: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelBeanValidatorBridge.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java	2009-05-27 12:01:13 UTC (rev 89461)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/KernelControllerContextAction.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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

Added: projects/microcontainer/trunk/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	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/AbstractKernelBeanValidator.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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);
+   }
+}

Added: projects/microcontainer/trunk/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	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/validation/basic/BasicKernelBeanValidator.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java	2009-05-27 12:01:13 UTC (rev 89461)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/config/KernelConfig.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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

Added: projects/microcontainer/trunk/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	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/spi/validation/KernelBeanValidator.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java	2009-05-27 12:01:13 UTC (rev 89461)
+++ projects/microcontainer/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/test/BeanValidatorBridgeTestCase.java	2009-05-27 12:27:08 UTC (rev 89462)
@@ -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);
+      }
    }
 }




More information about the jboss-cvs-commits mailing list