Author: rmannibucau Date: Wed May 15 21:24:02 2013 New Revision: 1483097 URL: http://svn.apache.org/r1483097 Log: WebContext NPE protection even from beanClass and not only for inject
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java?rev=1483097&r1=1483096&r2=1483097&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java Wed May 15 21:24:02 2013 @@ -111,23 +111,42 @@ public class WebContext { final WebBeansContext webBeansContext = getWebBeansContext(); final ConstructorInjectionBean<Object> beanDefinition = getConstructorInjectionBean(beanClass, webBeansContext); - final CreationalContext<Object> creationalContext = webBeansContext.getBeanManagerImpl().createCreationalContext(beanDefinition); + final CreationalContext<Object> creationalContext; + final Object o; + if (webBeansContext == null) { + creationalContext = null; + try { + o = beanClass.newInstance(); + } catch (final InstantiationException e) { + throw new OpenEJBException(e); + } catch (final IllegalAccessException e) { + throw new OpenEJBException(e); + } + } else { + creationalContext = webBeansContext.getBeanManagerImpl().createCreationalContext(beanDefinition); + o = beanDefinition.create(creationalContext); + } // Create bean instance - final Object o = beanDefinition.create(creationalContext); final Context unwrap = InjectionProcessor.unwrap(getInitialContext()); final InjectionProcessor injectionProcessor = new InjectionProcessor(o, injections, unwrap); final Object beanInstance = injectionProcessor.createInstance(); - InjectionTargetBean<Object> bean = InjectionTargetBean.class.cast(beanDefinition); - bean.getInjectionTarget().inject(beanInstance, creationalContext); + if (webBeansContext != null) { + InjectionTargetBean<Object> bean = InjectionTargetBean.class.cast(beanDefinition); + bean.getInjectionTarget().inject(beanInstance, creationalContext); - creatonalContexts.put(beanInstance, creationalContext); + creatonalContexts.put(beanInstance, creationalContext); + } return beanInstance; } private ConstructorInjectionBean<Object> getConstructorInjectionBean(final Class beanClass, final WebBeansContext webBeansContext) { + if (webBeansContext == null) { + return null; + } + ConstructorInjectionBean<Object> beanDefinition = constructorInjectionBeanCache.get(beanClass); if (beanDefinition == null) { synchronized (this) {