You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwebbeans.apache.org by "Mark Struberg (Closed) (JIRA)" <ji...@apache.org> on 2011/10/12 23:01:12 UTC

[jira] [Closed] (OWB-597) StackOverFlow when injecting product in same bean where @Produces is placed

     [ https://issues.apache.org/jira/browse/OWB-597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mark Struberg closed OWB-597.
-----------------------------

       Resolution: Won't Fix
    Fix Version/s:     (was: 1.2.0)
                   1.1.2
         Assignee: Mark Struberg  (was: Gurkan Erdogdu)

The current behaviour is ok for CDI-1.0/JSR-250. CDI-1.1 will clarify that this is a cyclic injection not allowed. We might need to add some detection in the future, but for now it's ok.
                
> StackOverFlow when injecting product in same bean where @Produces is placed
> ---------------------------------------------------------------------------
>
>                 Key: OWB-597
>                 URL: https://issues.apache.org/jira/browse/OWB-597
>             Project: OpenWebBeans
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>         Environment: OWB 1.1.1-SNAPSHOT trunk
>            Reporter: Martin Kočí
>            Assignee: Mark Struberg
>            Priority: Critical
>             Fix For: 1.1.2
>
>
> public class SomeBean {
> 	@Inject private Product product;
> 	
> 	@Produces @Named public Product getProduct() {return new Product();}
> 	
> 	@Alternative
> 	public static class Product {}
> }
> + use @Inject in client:
> @Inject  Product product;
> leads to:
> Exception in thread "main" java.lang.StackOverflowError
> 	at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:182)
> 	at org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:69)
> 	at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:190)
> 	at org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:963)
> 	at org.apache.webbeans.component.AbstractProducerBean.getParentInstance(AbstractProducerBean.java:114)
> 	at org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:188)
> 	at org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:155)
> 	at org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:235)
> 	at org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:81)
> 	at org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:142)
> 	at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:181)
> 	at org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:69)
> 	at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:190)
> 	at org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:963)
> 	at org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:841)
> 	at org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:133)
> 	at org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:59)
> 	at org.apache.webbeans.component.AbstractInjectionTargetBean.injectField(AbstractInjectionTargetBean.java:384)
> 	at org.apache.webbeans.component.AbstractInjectionTargetBean.injectFields(AbstractInjectionTargetBean.java:321)
> 	at org.apache.webbeans.portable.creation.InjectionTargetProducer.inject(InjectionTargetProducer.java:95)
> 	at org.apache.webbeans.component.InjectionTargetWrapper.inject(InjectionTargetWrapper.java:80)
> 	at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:182)
> 	at org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:69)
> 	at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:190)
> 	at org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:963)
> 	at org.apache.webbeans.component.AbstractProducerBean.getParentInstance(AbstractProducerBean.java:114)
> 	at org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:188)
> 	at org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:155)
> 	at org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:235)
> 	at org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:81)
> 	at org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:142)
> 	at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:181)
> 	at org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:69)
> 	at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:190)
> Weld handles this situation. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira