[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