Author: rmannibucau
Date: Mon Jul 9 17:52:17 2012
New Revision: 1359313
URL: http://svn.apache.org/viewvc?rev=1359313&view=rev
Log:
TOMEE-273 skipping not loadable cdi beans
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java?rev=1359313&r1=1359312&r2=1359313&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
Mon Jul 9 17:52:17 2012
@@ -369,7 +369,19 @@ public class OpenEJBLifecycle implements
}
for (Map.Entry<Class<?>, AnnotatedType<?>> implClass :
annotatedTypes.entrySet()) {
//Fires ProcessAnnotatedType
- ProcessAnnotatedTypeImpl<?> processAnnotatedEvent =
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(implClass.getValue());
+ final ProcessAnnotatedTypeImpl<?> processAnnotatedEvent;
+ try {
+ processAnnotatedEvent =
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(implClass.getValue());
+ } catch (RuntimeException cnfe) {
+ if (rootCauseIsClassNotFound(cnfe)) {
+ logger.error("an error occured firing
ProcessAnnotatedEvent for class "
+ + implClass.getValue().getJavaClass().getName() + ".
Skipping the bean.");
+ logger.debug("Skipping bean cause", cnfe);
+ continue;
+ } else {
+ throw cnfe;
+ }
+ }
//if veto() is called
if (processAnnotatedEvent.isVeto()) {
@@ -381,6 +393,18 @@ public class OpenEJBLifecycle implements
annotatedTypes.clear();
}
+ private static boolean rootCauseIsClassNotFound(final RuntimeException re)
{
+ Throwable e = re;
+ e.getStackTrace();
+ while (e != null) {
+ if (e instanceof ClassNotFoundException) {
+ return true;
+ }
+ e = e.getCause();
+ }
+ return false;
+ }
+
@Override
public void stopApplication(Object endObject)
{