You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwebbeans.apache.org by Gurkan Erdogdu <gu...@yahoo.com> on 2010/03/21 01:18:27 UTC

Re: svn commit: r923435 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ component/creation/ config/ container/ decorator/ intercept/ portable/events/discovery/ util/

Main motivation was that:

Bean creators are used for creating the beans. And if InjectionTargets/Producers are set by the observers, AbstractInjectionTargetBean or AbstractProducerBean uses final objects to produce bean artifacts. 

But there is an error/mistake in current code base in regard to 3Party overriden. If observer(ProcessInjectionTarget) wraps the original InjectionTarget, then StackOverFlow occurs. Becuase in current code base

AbstractInjectionTargetBean # getInjectionPoints  --> AbstractBeanCreator # getInjectionPoints --> producer # getInjectionPoints

And if "producer" wraps original injection target like this,
ProducerInjectionTarget implement InjectionTarget
{
    InjectionTarget wrapped ....
  
    public Set getInjectionPoints()
   {
         wrapped.getInjectionPoints();
   }
}

Then producer # getInjectionPoints agains calls AbstractInjectionTargetBean # getInjectionPoints to infinitely. Therefore I have commented out below producer.

 I will look for further errors.

Thanks;

--Gurkan





________________________________
From: Eric Covener <co...@gmail.com>
To: dev@openwebbeans.apache.org
Sent: Sun, March 21, 2010 1:43:51 AM
Subject: Re: svn commit: r923435 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:  component/ component/creation/ config/ container/ decorator/ intercept/  portable/events/discovery/ util/

On Mon, Mar 15, 2010 at 4:54 PM,  <ge...@apache.org> wrote:
> Author: gerdogdu
> Date: Mon Mar 15 20:54:43 2010
> New Revision: 923435

> Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectedTargetBeanCreator.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectedTargetBeanCreator.java?rev=923435&r1=923434&r2=923435&view=diff
> ==============================================================================
> --- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectedTargetBeanCreator.java (original)
> +++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectedTargetBeanCreator.java Mon Mar 15 20:54:43 2010
> @@ -183,6 +183,7 @@ public abstract class AbstractInjectedTa
>     {
>         this.injectionTarget = injectionTarget;
>         this.injectionTargetSet = true;
> +        //super.setProducer(injectionTarget);
>     }

I was looking at something in this neighborhood, Is
AbstractBeanCreator.producer() really just for third-party provided
impl registered via the event?  Why does e.g.
AbstractBeanCreator.getInjectionPoint()  and getProducer() seem to
expect this to always be available?

In similar vein, AbstractInjectedTargetBeanCreator.setInjectedTarget()
is only called when some third-party observer has reset it?

My TCK env still gets ~240 errors so I maybe missing something in the
setup, but I see this backtrace during deployment:

SEVERE: Exception sending context initialized event to listener
instance of class
org.apache.webbeans.servlet.WebBeansConfigurationListener
Throwable occurred: java.lang.NullPointerException
        at org.apache.webbeans.component.creation.AbstractBeanCreator.getInjectionPoints(AbstractBeanCreator.java:259)
        at org.apache.webbeans.component.AbstractInjectionTargetBean.getInjectionPoints(AbstractInjectionTargetBean.java:621)
        at org.apache.webbeans.util.WebBeansUtil.createNewBean(WebBeansUtil.java:698)
        at org.apache.webbeans.util.WebBeansUtil.defineManagedBean(WebBeansUtil.java:2915)
        at org.apache.webbeans.config.BeansDeployer.defineManagedBean(BeansDeployer.java:680)
        at org.apache.webbeans.config.BeansDeployer.deployFromClassPath(BeansDeployer.java:387)
        at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:146)
        at org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:120)
        at org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:75)
        at org.apache.webbeans.servlet.WebBeansConfigurationListener.contextInitialized(WebBeansConfigurationListener.java:66)


I am arbitrarily
onorg.jboss.jsr299.tck.tests.extensions.producer.ProducerTest.testDisposeDoesNothing


-- 
Eric Covener
covener@gmail.com



      ___________________________________________________________________
Yahoo! Türkiye açıldı!  http://yahoo.com.tr
İnternet üzerindeki en iyi içeriği Yahoo! Türkiye sizlere sunuyor!