Author: rmannibucau
Date: Sun Jun 1 12:43:05 2014
New Revision: 1598983
URL: http://svn.apache.org/r1598983
Log:
avoiding NPE when ejb has no webbeanscontext (internal app mainly)
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OWBContextThreadListener.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OWBContextThreadListener.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OWBContextThreadListener.java?rev=1598983&r1=1598982&r2=1598983&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OWBContextThreadListener.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OWBContextThreadListener.java
Sun Jun 1 12:43:05 2014
@@ -36,7 +36,7 @@ public class OWBContextThreadListener im
@Override
public void contextEntered(final ThreadContext oldContext, final
ThreadContext newContext) {
final BeanContext beanContext = newContext.getBeanContext();
- if (beanContext == null) {
+ if (beanContext == null) { // OWBContextHolder will be null so calling
contextExited will throw a NPE
return;
}
final ModuleContext moduleContext = beanContext.getModuleContext();
@@ -44,10 +44,12 @@ public class OWBContextThreadListener im
//For now, go with the attachment of the BeanManager to AppContext
final AppContext appContext = moduleContext.getAppContext();
final WebBeansContext owbContext = appContext.getWebBeansContext();
- if (owbContext == null) {
- return;
+ final Object oldOWBContext;
+ if (owbContext != null) {
+ oldOWBContext = singletonService.contextEntered(owbContext);
+ } else {
+ oldOWBContext = null;
}
- final Object oldOWBContext =
singletonService.contextEntered(owbContext);
final OWBContextHolder holder = new OWBContextHolder(oldOWBContext);
newContext.set(OWBContextHolder.class, holder);
}
@@ -58,7 +60,11 @@ public class OWBContextThreadListener im
if (oldOWBContext == null) {
throw new NullPointerException("OWBContext not set in this
thread");
}
- singletonService.contextExited(oldOWBContext.getContext());
+
+ final Object oldOWBContextContext = oldOWBContext.getContext();
+ if (oldOWBContextContext != null) {
+ singletonService.contextExited(oldOWBContextContext);
+ }
}
private static final class OWBContextHolder {