[jboss-cvs] JBossAS SVN: r73493 - in projects/jboss-deployers/trunk: deployers-impl/src/main/org/jboss/deployers/plugins/annotations and 27 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon May 19 10:06:15 EDT 2008


Author: alesj
Date: 2008-05-19 10:06:15 -0400 (Mon, 19 May 2008)
New Revision: 73493

Added:
   projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/BeanScanningDeployer.java
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/META-INF/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/META-INF/empyt.txt
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/support/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.class
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.class
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/META-INF/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/META-INF/override-beans.xml
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/support/
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.class
   projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.class
   projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.java
   projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.java
   projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java
Modified:
   projects/jboss-deployers/trunk/build/pom.xml
   projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
   projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/helpers/AttachmentLocator.java
   projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
   projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java
   projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanManagedDeploymentUnitTestCase.java
Log:
Use MC snapshot - due to @Bean(Factory).
BeanScanning deployer introduction.

Modified: projects/jboss-deployers/trunk/build/pom.xml
===================================================================
--- projects/jboss-deployers/trunk/build/pom.xml	2008-05-19 13:39:22 UTC (rev 73492)
+++ projects/jboss-deployers/trunk/build/pom.xml	2008-05-19 14:06:15 UTC (rev 73493)
@@ -23,7 +23,7 @@
   <properties>
     <version.jboss.man>2.0.0.Beta12</version.jboss.man>
     <version.jboss.mdr>2.0.0.Beta15</version.jboss.mdr>
-    <version.jboss.microcontainer>2.0.0.Beta14</version.jboss.microcontainer>
+    <version.jboss.microcontainer>2.0.0-SNAPSHOT</version.jboss.microcontainer>
     <version.jboss.classloader>2.0.0.Beta12</version.jboss.classloader>
     <version.jboss.common.core>2.2.4.GA</version.jboss.common.core>
     <version.jboss.common.logging.spi>2.0.4.GA</version.jboss.common.logging.spi>

Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java	2008-05-19 13:39:22 UTC (rev 73492)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -25,6 +25,7 @@
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 
@@ -40,6 +41,7 @@
    public GenericAnnotationDeployer()
    {
       super(Module.class);
+      setStage(DeploymentStages.PRE_REAL);
    }
 
    /**

Modified: projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/helpers/AttachmentLocator.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/helpers/AttachmentLocator.java	2008-05-19 13:39:22 UTC (rev 73492)
+++ projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/helpers/AttachmentLocator.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -29,6 +29,7 @@
  * 
  * @author Scott.Stark at jboss.org
  * @author adrian at jboss.org
+ * @author ales.justin at jboss.org
  * @version $Revision:$
  */
 public class AttachmentLocator
@@ -41,7 +42,7 @@
     * @return the attachment or null if not present
     * @throws IllegalArgumentException for a null name
     */
-   static public Object search(DeploymentUnit unit, String name)
+   public static Object search(DeploymentUnit unit, String name)
    {
       Object attachment = null;
       while (attachment == null && unit != null)
@@ -62,11 +63,15 @@
     * @return the attachment or null if not present
     * @throws IllegalArgumentException for a null name or expectedType
     */
-   static public <T> T search(DeploymentUnit unit, String name, Class<T> expectedType)
+   public static <T> T search(DeploymentUnit unit, String name, Class<T> expectedType)
    {
       Object result = search(unit, name);
       if (result == null)
          return null;
+
+      if (expectedType == null)
+         throw new IllegalArgumentException("Null expected type.");
+
       return expectedType.cast(result);
    }
 
@@ -79,7 +84,7 @@
     * @return the attachment or null if not present
     * @throws IllegalArgumentException for a null name or type
     */
-   static public <T> T search(DeploymentUnit unit, Class<T> type)
+   public static <T> T search(DeploymentUnit unit, Class<T> type)
    {
       return search(unit, type.getName(), type);
    }

Copied: projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/BeanScanningDeployer.java (from rev 72857, projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/BeanDeployer.java)
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/BeanScanningDeployer.java	                        (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/deployer/kernel/BeanScanningDeployer.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -0,0 +1,201 @@
+/*
+* 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.deployers.vfs.deployer.kernel;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.beans.metadata.api.annotations.Bean;
+import org.jboss.beans.metadata.api.annotations.BeanFactory;
+import org.jboss.beans.metadata.plugins.AbstractAliasMetaData;
+import org.jboss.beans.metadata.spi.AliasMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.beans.metadata.spi.factory.GenericBeanFactoryMetaData;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
+import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * BeanScanningDeployer.<p>
+ * <p/>
+ * This deployer is responsible for looking for @Bean(Factory)
+ * and creating the metadata object.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BeanScanningDeployer extends AbstractSimpleRealDeployer<AnnotationEnvironment>
+{
+   public BeanScanningDeployer()
+   {
+      this(null);
+   }
+
+   /**
+    * We depend on KernelDeploymentDeployer for the order if it's present,
+    * but can be null, then order doesn't matter, but we still go +10.
+    *
+    * @param kdd the kernel deployment deployer
+    */
+   public BeanScanningDeployer(KernelDeploymentDeployer kdd)
+   {
+      super(AnnotationEnvironment.class);
+      setInputs(BeanMetaData.class);
+      setOutput(BeanMetaData.class);
+      if (kdd != null)
+         setRelativeOrder(kdd.getRelativeOrder() + 10);
+      else
+         setRelativeOrder(getRelativeOrder() + 10);
+   }
+
+   /**
+    * Add beam metadata as component.
+    *
+    * @param unit the deployment unit
+    * @param bean the bean metadata
+    */
+   protected static void addBeanComponent(DeploymentUnit unit, BeanMetaData bean)
+   {
+      DeploymentUnit component = unit.addComponent(bean.getName());
+      component.addAttachment(BeanMetaData.class.getName(), bean);
+   }
+
+   public void deploy(DeploymentUnit unit, AnnotationEnvironment env) throws DeploymentException
+   {
+      Map<String, DeploymentUnit> components = null;
+
+      Set<Class<?>> beans = env.classIsAnnotatedWith(Bean.class);
+      if (beans != null && beans.isEmpty() == false)
+      {
+         components = new HashMap<String, DeploymentUnit>();
+         mapComponents(unit, components);
+
+         for (Class<?> beanClass : beans)
+         {
+            Bean bean = beanClass.getAnnotation(Bean.class);
+            String name = bean.name();
+            if (name == null)
+               throw new IllegalArgumentException("Null bean name: " + beanClass);
+
+            DeploymentUnit component = components.get(name);
+            BeanMetaData bmd = null;
+            if (component != null)
+               bmd = component.getAttachment(BeanMetaData.class);
+
+            if (bmd == null)
+            {
+               BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name, beanClass.getName());
+               String[] aliases = bean.aliases();
+               if (aliases != null && aliases.length > 0)
+                  builder.setAliases(new HashSet<Object>(Arrays.asList(aliases)));
+               builder.setMode(bean.mode())
+                      .setAccessMode(bean.accessMode())
+                      .setAutowireType(bean.autowireType())
+                      .setErrorHandlingMode(bean.errorHandlingMode())
+                      .setAutowireCandidate(bean.autowireCandidate());
+
+               addBeanComponent(unit, builder.getBeanMetaData());
+            }
+            else
+            {
+               // TODO should we do something .. or leave it to previous metadata?
+               log.info("BeanMetaData with such name already exists: " + bmd + ", scanned: " + beanClass);
+            }
+         }
+      }
+
+      Set<Class<?>> beanFactories = env.classIsAnnotatedWith(BeanFactory.class);
+      if (beanFactories != null && beanFactories.isEmpty() == false)
+      {
+         if (components == null)
+         {
+            components = new HashMap<String, DeploymentUnit>();
+            mapComponents(unit, components);
+         }
+
+         for (Class<?> beanFactoryClass : beanFactories)
+         {
+            BeanFactory beanFactory = beanFactoryClass.getAnnotation(BeanFactory.class);
+            String name = beanFactory.name();
+            if (name == null)
+               throw new IllegalArgumentException("Null bean name: " + beanFactoryClass);
+
+            DeploymentUnit component = components.get(name);
+            BeanMetaData bmd = null;
+            if (component != null)
+               bmd = component.getAttachment(BeanMetaData.class);
+
+            if (bmd == null)
+            {
+               GenericBeanFactoryMetaData gbfmd = new GenericBeanFactoryMetaData(name, beanFactoryClass.getName());
+               String[] aliases = beanFactory.aliases();
+               if (aliases != null && aliases.length > 0)
+               {
+                  Set<AliasMetaData> aliasesMD = new HashSet<AliasMetaData>();
+                  for (String alias : aliases)
+                  {
+                     AbstractAliasMetaData aamd = new AbstractAliasMetaData();
+                     aamd.setAlias(alias);
+                     aliasesMD.add(aamd);
+                  }
+                  gbfmd.setAliases(aliasesMD);
+               }
+               gbfmd.setMode(beanFactory.mode());
+               gbfmd.setAccessMode(beanFactory.accessMode());
+
+               List<BeanMetaData> bfBeans = gbfmd.getBeans();
+               for (BeanMetaData bfb : bfBeans)
+                  addBeanComponent(unit, bfb);
+            }
+            else
+            {
+               // TODO should we do something .. or leave it to previous metadata?               
+               log.info("BeanMetaData with such name already exists: " + bmd + ", scanned: " + beanFactoryClass);
+            }
+         }
+      }
+   }
+
+   /**
+    * Map components.
+    *
+    * @param unit the deployment unit
+    * @param map  map to fill
+    */
+   protected static void mapComponents(DeploymentUnit unit, Map<String, DeploymentUnit> map)
+   {
+      List<DeploymentUnit> components = unit.getComponents();
+      if (components != null && components.isEmpty() == false)
+      {
+         for (DeploymentUnit component : components)
+         {
+            map.put(component.getName(), component);
+            mapComponents(component, map);
+         }
+      }
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java	2008-05-19 13:39:22 UTC (rev 73492)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -28,10 +28,13 @@
 
 import org.jboss.classloader.spi.filter.ClassFilter;
 import org.jboss.classloading.plugins.vfs.PackageVisitor;
+import org.jboss.classloading.plugins.vfs.VFSResourceVisitor;
 import org.jboss.classloading.spi.metadata.Capability;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
 import org.jboss.classloading.spi.metadata.ExportAll;
 import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
+import org.jboss.classloading.spi.visitor.ResourceVisitor;
+import org.jboss.classloading.spi.visitor.ResourceFilter;
 import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
@@ -161,4 +164,20 @@
       super.reset();
       vfsRoots = null;
    }
+
+   @Override
+   public void visit(ResourceVisitor visitor, ResourceFilter filter)
+   {
+      ClassLoader classLoader = getClassLoader();
+      if (classLoader == null)
+         throw new IllegalStateException("ClassLoader has not been constructed for " + getContextName());
+
+      VirtualFile[] roots = determineVFSRoots();
+      if (roots != null)
+      {
+         ClassFilter included = getIncluded();
+         ClassFilter excluded = getExcluded();
+         VFSResourceVisitor.visit(roots, included, excluded, classLoader, visitor, filter);
+      }
+   }
 }

Added: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/META-INF/empyt.txt
===================================================================

Added: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.class
===================================================================
(Binary files differ)


Property changes on: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.class
===================================================================
(Binary files differ)


Property changes on: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_no_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/META-INF/override-beans.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/META-INF/override-beans.xml	                        (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/META-INF/override-beans.xml	2008-05-19 14:06:15 UTC (rev 73493)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+   <bean name="Test" class="org.jboss.test.deployers.vfs.deployer.bean.support.SimpleInjectee"/>
+   <beanfactory name="TestBF" class="org.jboss.test.deployers.vfs.deployer.bean.support.SimpleInjectee"/>
+</deployment>

Added: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.class
===================================================================
(Binary files differ)


Property changes on: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.class
===================================================================
(Binary files differ)


Property changes on: projects/jboss-deployers/trunk/deployers-vfs/src/resources/tests/bean/scan_w_override/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java	2008-05-19 13:39:22 UTC (rev 73492)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -25,6 +25,8 @@
 import org.jboss.test.deployers.vfs.deployer.bean.test.BeanDeployerUnitTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.KernelDeployerUnitTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.AliasDeployerUnitTestCase;
+import org.jboss.test.deployers.vfs.deployer.bean.test.BeanScanningUnitTestCase;
+import org.jboss.test.deployers.vfs.deployer.bean.test.BeanManagedDeploymentUnitTestCase;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
@@ -51,6 +53,8 @@
       suite.addTest(KernelDeployerUnitTestCase.suite());
       suite.addTest(AliasDeployerUnitTestCase.suite());
       suite.addTest(BeanDeployerClassLoaderUnitTestCase.suite());
+      suite.addTest(BeanManagedDeploymentUnitTestCase.suite());
+      suite.addTest(BeanScanningUnitTestCase.suite());
 
       return suite;
    }

Added: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.java	                        (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanAnnotationHolder.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -0,0 +1,37 @@
+/*
+* 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.deployers.vfs.deployer.bean.support;
+
+import org.jboss.beans.metadata.api.annotations.Bean;
+import org.jboss.beans.info.spi.BeanAccessMode;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+ at Bean(
+      name = "Test",
+      aliases = {"AT1", "AT2"},
+      accessMode = BeanAccessMode.ALL
+)
+public class BeanAnnotationHolder
+{
+}

Added: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.java	                        (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/support/BeanFactoryAnnotationHolder.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -0,0 +1,38 @@
+/*
+* 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.deployers.vfs.deployer.bean.support;
+
+import org.jboss.beans.info.spi.BeanAccessMode;
+import org.jboss.beans.metadata.api.annotations.BeanFactory;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+ at BeanFactory
+(
+   name = "TestBF",
+   aliases = {"BFAT1", "BFAT2"},
+   accessMode = BeanAccessMode.ALL
+)
+public class BeanFactoryAnnotationHolder
+{
+}
\ No newline at end of file

Modified: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanManagedDeploymentUnitTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanManagedDeploymentUnitTestCase.java	2008-05-19 13:39:22 UTC (rev 73492)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanManagedDeploymentUnitTestCase.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -24,7 +24,6 @@
 import java.util.Map;
 
 import junit.framework.Test;
-import junit.framework.TestSuite;
 import org.jboss.deployers.vfs.deployer.kernel.BeanDeployer;
 import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer;
 import org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer;
@@ -47,7 +46,7 @@
 {
    public static Test suite()
    {
-      return new TestSuite(BeanManagedDeploymentUnitTestCase.class);
+      return suite(BeanManagedDeploymentUnitTestCase.class);
    }
 
    public BeanManagedDeploymentUnitTestCase(String name) throws Throwable
@@ -59,7 +58,7 @@
     * Basic test of getting ManagedObject/ManagedProperty from a bean deployment.
     * TODO: the root ManagedObject for a KernelDeployment should be coming from a
     * custom {@linkplain org.jboss.managed.spi.factory.InstanceClassFactory}
-    * @throws Exception
+    * @throws Exception for any error
     */
    public void testBeanManagedObject()
       throws Exception
@@ -110,5 +109,4 @@
       addDeployer(main, kernelDeploymentDeployer);
       addDeployer(main, beanMetaDataDeployer);
    }
-
 }

Copied: projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java (from rev 72857, projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/AliasDeployerUnitTestCase.java)
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/tests/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java	2008-05-19 14:06:15 UTC (rev 73493)
@@ -0,0 +1,149 @@
+/*
+* 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.deployers.vfs.deployer.bean.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.beans.metadata.spi.factory.BeanFactory;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.dependency.ClassLoading;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.plugins.annotations.GenericAnnotationDeployer;
+import org.jboss.deployers.plugins.classloading.AbstractLevelClassLoaderSystemDeployer;
+import org.jboss.deployers.plugins.classloading.ClassLoadingDefaultDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.BeanDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.BeanScanningDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer;
+import org.jboss.deployers.vfs.spi.client.VFSDeployment;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.test.deployers.vfs.deployer.AbstractDeployerUnitTest;
+import org.jboss.test.deployers.vfs.deployer.bean.support.SimpleInjectee;
+import org.jboss.test.deployers.vfs.deployer.bean.support.BeanAnnotationHolder;
+import org.jboss.test.deployers.vfs.deployer.bean.support.BeanFactoryAnnotationHolder;
+
+/**
+ * BeanScanningUnitTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BeanScanningUnitTestCase extends AbstractDeployerUnitTest
+{
+   public static Test suite()
+   {
+      return new TestSuite(BeanScanningUnitTestCase.class);
+   }
+
+   public BeanScanningUnitTestCase(String name) throws Throwable
+   {
+      super(name);
+   }
+
+   protected void addDeployers(Kernel kernel)
+   {
+      BeanDeployer beanDeployer = new BeanDeployer();
+
+      ClassLoadingDefaultDeployer cldd = new ClassLoadingDefaultDeployer();
+      ClassLoadingMetaData clmd = new ClassLoadingMetaData();
+      cldd.setDefaultMetaData(clmd);
+
+      VFSClassLoaderDescribeDeployer vfsdd = new VFSClassLoaderDescribeDeployer();
+      ClassLoading classLoading = new ClassLoading();
+      KernelController controller = kernel.getController();
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("ClassLoading", ClassLoading.class.getName());
+      builder.addMethodInstallCallback("addModule");
+      builder.addMethodUninstallCallback("removeModule");
+      try
+      {
+         controller.install(builder.getBeanMetaData(), classLoading);
+      }
+      catch (Throwable t)
+      {
+         throw new RuntimeException(t);
+      }
+      vfsdd.setClassLoading(classLoading);
+
+      AbstractLevelClassLoaderSystemDeployer clsd = new AbstractLevelClassLoaderSystemDeployer();
+      clsd.setClassLoading(classLoading);
+      clsd.setSystem(ClassLoaderSystem.getInstance());
+
+      GenericAnnotationDeployer gad = new GenericAnnotationDeployer();
+      KernelDeploymentDeployer kernelDeploymentDeployer = new KernelDeploymentDeployer();
+      BeanScanningDeployer bsd = new BeanScanningDeployer(kernelDeploymentDeployer);
+      BeanMetaDataDeployer beanMetaDataDeployer = new BeanMetaDataDeployer(kernel);
+
+      addDeployer(main, beanDeployer);
+      addDeployer(main, cldd);
+      addDeployer(main, vfsdd);
+      addDeployer(main, clsd);
+      addDeployer(main, gad);
+      addDeployer(main, kernelDeploymentDeployer);
+      addDeployer(main, bsd);
+      addDeployer(main, beanMetaDataDeployer);
+   }
+
+   public void testNoOverride() throws Throwable
+   {
+      VFSDeployment context = createDeployment("/bean", "scan_no_override");
+      assertDeploy(context);
+
+      ControllerContext testCC = controller.getInstalledContext("Test");
+      assertNotNull(testCC);
+      assertInstanceOf(testCC.getTarget(), BeanAnnotationHolder.class, false);
+
+      ControllerContext testCCBF = controller.getInstalledContext("TestBF");
+      assertNotNull(testCCBF);
+      Object target = testCCBF.getTarget();
+      assertInstanceOf(target, BeanFactory.class, false);
+      BeanFactory bf = (BeanFactory)target;
+      assertInstanceOf(bf.createBean(), BeanFactoryAnnotationHolder.class, false);
+
+      assertUndeploy(context);
+      assertNull(controller.getContext("TestBF", null));
+      assertNull(controller.getContext("Test", null));
+   }
+
+   public void testWithOverride() throws Throwable
+   {
+      VFSDeployment context = createDeployment("/bean", "scan_w_override");
+      assertDeploy(context);
+
+      ControllerContext testCC = controller.getInstalledContext("Test");
+      assertNotNull(testCC);
+      assertInstanceOf(testCC.getTarget(), SimpleInjectee.class, false);
+
+      ControllerContext testCCBF = controller.getInstalledContext("TestBF");
+      assertNotNull(testCCBF);
+      Object target = testCCBF.getTarget();
+      assertInstanceOf(target, BeanFactory.class, false);
+      BeanFactory bf = (BeanFactory)target;
+      assertInstanceOf(bf.createBean(), SimpleInjectee.class, false);
+
+      assertUndeploy(context);
+      assertNull(controller.getContext("TestBF", null));
+      assertNull(controller.getContext("Test", null));
+   }
+}
\ No newline at end of file




More information about the jboss-cvs-commits mailing list