Author: bergmark
Date: Thu Nov 11 19:48:46 2010
New Revision: 1034079
URL: http://svn.apache.org/viewvc?rev=1034079&view=rev
Log:
[OWB-489] Added support for AnnotatedTypes added by Extensions in
BeforeBeanDiscovery.addAnnotatedType
Added:
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/BeforeBeanDiscoveryTest.java
- copied unchanged from r1034025,
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/BeforeBeanDiscoveryTest.java
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/addannotated/
- copied from r1034025,
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/addannotated/
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/addannotated/extension/
- copied from r1034025,
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/addannotated/extension/
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/addannotated/extension/AddAdditionalAnnotatedTypeExtension.java
- copied unchanged from r1034025,
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/addannotated/extension/AddAdditionalAnnotatedTypeExtension.java
Modified:
openwebbeans/branches/owb_1.0.x/webbeans-impl/ (props changed)
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
Propchange: openwebbeans/branches/owb_1.0.x/webbeans-impl/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 11 19:48:46 2010
@@ -1 +1 @@
-/openwebbeans/trunk/webbeans-impl:1021872
+/openwebbeans/trunk/webbeans-impl:1021872,1034025
Modified:
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL:
http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1034079&r1=1034078&r2=1034079&view=diff
==============================================================================
---
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
(original)
+++
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
Thu Nov 11 19:48:46 2010
@@ -22,10 +22,11 @@ import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.net.URL;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
-import java.util.ArrayList;
import java.util.Stack;
import javax.enterprise.inject.Model;
@@ -169,6 +170,9 @@ public class BeansDeployer
//Discover classpath classes
deployFromClassPath(scanner);
+ //Deploy additional Annotated Types
+ deployAdditionalAnnotatedTypes();
+
//Check Specialization
checkSpecializations(scanner);
@@ -471,27 +475,19 @@ public class BeansDeployer
//Define annotation type
AnnotatedType<?> annotatedType =
AnnotatedElementFactory.getInstance().newAnnotatedType(implClass);
- //Fires ProcessAnnotatedType
- ProcessAnnotatedTypeImpl<?> processAnnotatedEvent =
WebBeansUtil.fireProcessAnnotatedTypeEvent(annotatedType);
-
- //if veto() is called
- if(processAnnotatedEvent.isVeto())
+ if (null != annotatedType)
{
- continue;
- }
-
- //Try class is Managed Bean
- boolean isDefined =
defineManagedBean((Class<Object>)implClass,
(ProcessAnnotatedTypeImpl<Object>)processAnnotatedEvent);
-
- //Try class is EJB bean
- if(!isDefined && this.discoverEjb)
- {
- if(EJBWebBeansConfigurator.isSessionBean(implClass))
+ deploySingleAnnotatedType(implClass, annotatedType);
+ }
+ else
+ {
+ if (logger.wblWillLogDebug())
{
- logger.debug("Found Enterprise Bean with class name :
[{0}]", implClass.getName());
- defineEnterpriseWebBean((Class<Object>)implClass,
(ProcessAnnotatedTypeImpl<Object>)processAnnotatedEvent);
+ logger.debug("Error creating managed bean "+
implClass);
}
- }
+
+ }
+
}
}
@@ -500,6 +496,55 @@ public class BeansDeployer
}
/**
+ * Deploys any AnnotatedTypes added to the BeanManager during
beforeBeanDiscovery.
+ */
+ private void deployAdditionalAnnotatedTypes()
+ {
+ BeanManagerImpl beanManager = BeanManagerImpl.getManager();
+
+ List<AnnotatedType<?>> annotatedTypes =
beanManager.getAnnotatedTypes();
+
+ for(AnnotatedType<?> type : annotatedTypes)
+ {
+ Class implClass = type.getJavaClass();
+
+ deploySingleAnnotatedType(implClass, type);
+ }
+ }
+
+ /**
+ * Common helper method used to deploy annotated types discovered through
+ * scanning or during beforeBeanDiscovery.
+ *
+ * @Param Class implClass the class of the bean to be deployed
+ * @Param AnnotatedType the AnnotatedType representing the bean to be
deployed
+ */
+ private void deploySingleAnnotatedType(Class implClass, AnnotatedType
annotatedType)
+ {
+ // Fires ProcessAnnotatedType
+ ProcessAnnotatedTypeImpl<?> processAnnotatedEvent =
WebBeansUtil.fireProcessAnnotatedTypeEvent(annotatedType);
+
+ // if veto() is called
+ if (processAnnotatedEvent.isVeto())
+ {
+ return;
+ }
+
+ // Try class is Managed Bean
+ boolean isDefined = defineManagedBean((Class<Object>) implClass,
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
+
+ // Try class is EJB bean
+ if (!isDefined && this.discoverEjb)
+ {
+ if (EJBWebBeansConfigurator.isSessionBean(implClass))
+ {
+ logger.debug("Found Enterprise Bean with class name : [{0}]",
implClass.getName());
+ defineEnterpriseWebBean((Class<Object>) implClass,
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
+ }
+ }
+ }
+
+ /**
* Discovers and deploys classes from XML.
*
* NOTE : Currently XML file is just used for configuring.
Modified:
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1034079&r1=1034078&r2=1034079&view=diff
==============================================================================
---
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
(original)
+++
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
Thu Nov 11 19:48:46 2010
@@ -1105,6 +1105,11 @@ public class BeanManagerImpl implements
return additionalScopes;
}
+ public List<AnnotatedType<?>> getAnnotatedTypes()
+ {
+ return this.additionalAnnotatedTypes;
+ }
+
public void clear()
{
this.additionalAnnotatedTypes.clear();