Loops in you generic usages? Romain Manni-Bucau @rmannibucau | Blog | Old Blog | Github | LinkedIn
2017-11-27 11:29 GMT+01:00 Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk>: > starts up ok but then on page load i get > > |java.lang.StackOverflowError at > org.apache.webbeans.util.GenericsUtil.isAssignableFrom(GenericsUtil.java:172) > at > org.apache.webbeans.util.GenericsUtil.isAssignableFrom(GenericsUtil.java:146) > at > org.apache.webbeans.util.GenericsUtil.isAssignableFrom(GenericsUtil.java:117) > at > org.apache.webbeans.util.GenericsUtil.satisfiesDependency(GenericsUtil.java:61) > at > org.apache.webbeans.container.BeanManagerImpl.isBeanTypeAssignableToGivenType(BeanManagerImpl.java:923) > at > org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:742) > at > org.apache.webbeans.portable.ProducerMethodProducer.produce(ProducerMethodProducer.java:84) > at > org.apache.webbeans.portable.AbstractProducer.produce(AbstractProducer.java:172) > at > org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:122) > at > org.apache.webbeans.component.ProducerMethodBean.create(ProducerMethodBean.java:95) > at > org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:68) > at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:125) > at > org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:799) > at > org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:659) > at > org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:103) > at > org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:65) > at > org.apache.webbeans.portable.InjectionTargetImpl.injectFields(InjectionTargetImpl.java:220) > at > org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:206) > at > org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:196) > at > org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:126) > at org.apache.webbeans.component.ManagedBean.create(ManagedBean.java:67) at > org.apache.webbeans.context.creational.BeanInstanceBag.create(BeanInstanceBag.java:76) > at > org.apache.webbeans.context.AbstractContext.getInstance(AbstractContext.java:159) > at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:125) > at > org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:101) > at > org.apache.webbeans.intercept.RequestScopedBeanInterceptorHandler.getContextualInstance(RequestScopedBeanInterceptorHandler.java:76) > at > org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.get(NormalScopedBeanInterceptorHandler.java:71) > at > org.apache.webbeans.proxy.NormalScopeProxyFactory.unwrapInstance(NormalScopeProxyFactory.java:90) > at > org.apache.webbeans.inject.InjectableMethod.doInjection(InjectableMethod.java:91) > at > org.apache.webbeans.portable.ProducerMethodProducer.produce(ProducerMethodProducer.java:89) > at > org.apache.webbeans.portable.AbstractProducer.produce(AbstractProducer.java:172) > at > org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:122) > at > org.apache.webbeans.component.ProducerMethodBean.create(ProducerMethodBean.java:95) > at > org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:68) > at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:125) > at > org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:799) > at > org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:659) > at > org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:103) > at > org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:65) > at > org.apache.webbeans.portable.InjectionTargetImpl.injectFields(InjectionTargetImpl.java:220) > at > org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:206) > at > org.apache.webbeans.portable.InjectionTargetImpl.inject(InjectionTargetImpl.java:196) > at > org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:126)| > > > > > On 27/11/2017 11:09, Romain Manni-Bucau wrote: >> >> Hi >> >> it looks accurate, a normal scoped instance - request scoped - proxies >> a not null instance so you can't return null. Using a @RequestScoped >> producer class (the enclosing one) and @Dependent producer can work >> too if you inject this context in request scoped instances only. >> >> Romain Manni-Bucau >> @rmannibucau | Blog | Old Blog | Github | LinkedIn >> >> >> 2017-11-27 11:02 GMT+01:00 Matthew Broadhead >> <matthew.broadh...@nbmlaw.co.uk>: >>> >>> if @Produces can produce null e.g. >>> >>> @Produces >>> @Default >>> @RequestScoped >>> public KeycloakSecurityContext keycloakSecurityContext() { >>> if (httpServletRequest.getUserPrincipal() instanceof >>> KeycloakPrincipal) >>> { >>> KeycloakPrincipal<KeycloakSecurityContext> keycloakPrincipal = >>> (KeycloakPrincipal<KeycloakSecurityContext>) >>> httpServletRequest.getUserPrincipal(); >>> return keycloakPrincipal.getKeycloakSecurityContext(); >>> } >>> return null; >>> } >>> >>> then i get >>> Caused by: >>> javax.enterprise.inject.IllegalProductException - WebBeans producer : >>> keycloakSecurityContext return type in the component implementation class >>> : >>> uk.me.kissy.external.producers.SecurityProducer scope type must be >>> @Dependent to create null instance >>> at >>> >>> org.apache.webbeans.util.WebBeansUtil.checkNullInstance(WebBeansUtil.java:902) >>> >>> I can't add @Dependent to the KeycloakSecurityContext class but if I add >>> it >>> to keycloakSecurityContext() i get >>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module >>> deployment failed >>> org.apache.webbeans.exception.WebBeansConfigurationException: Annotated >>> producer method : public org.keycloak.KeycloakSecurityContext >>> uk.me.kissy.external.producers.SecurityProducer.token()must declare >>> default >>> @Scope annotation > >