Author: arne
Date: Tue Jan 22 14:15:41 2013
New Revision: 1436941
URL: http://svn.apache.org/viewvc?rev=1436941&view=rev
Log:
OWB-755: Fixed parent of producers of specialized beans
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerMethodProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java?rev=1436941&r1=1436940&r2=1436941&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
Tue Jan 22 14:15:41 2013
@@ -641,11 +641,6 @@ public abstract class AbstractInjectionT
ProducerMethodBeanBuilder<T> producerMethodBeanCreator = new
ProducerMethodBeanBuilder<T>(bean, annotatedMethod);
- if(specialize)
- {
-
producerMethodBeanCreator.configureProducerSpecialization((AnnotatedMethod<T>)
annotatedMethod);
- }
-
producerMethodBeanCreator.defineStereoTypes();
producerMethodBeanCreator.defineScopeType("Annotated producer
method : " + annotatedMethod
+ "must declare default @Scope annotation");
@@ -656,6 +651,11 @@ public abstract class AbstractInjectionT
producerMethodBeanCreator.defineApiType();
producerMethodBeanCreator.defineName();
ProducerMethodBean<T> producerMethodBean =
producerMethodBeanCreator.getBean();
+
+ if(specialize)
+ {
+
producerMethodBeanCreator.configureProducerSpecialization(producerMethodBean,
(AnnotatedMethod<T>) annotatedMethod);
+ }
ProducerMethodProducerBuilder producerBuilder = new
ProducerMethodProducerBuilder(producerMethodBean);
producerMethodBean.setProducer(producerBuilder.build(annotatedMethod));
producerMethodBean.setCreatorMethod(annotatedMethod.getJavaMember());
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java?rev=1436941&r1=1436940&r2=1436941&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
Tue Jan 22 14:15:41 2013
@@ -49,7 +49,7 @@ public class ProducerMethodBeanBuilder<T
super(parent, annotatedMethod);
}
- public void configureProducerSpecialization(AnnotatedMethod<T>
annotatedMethod)
+ public void configureProducerSpecialization(ProducerMethodBean<T> bean,
AnnotatedMethod<T> annotatedMethod)
{
List<AnnotatedParameter<T>> annotatedParameters =
annotatedMethod.getParameters();
List<Class<?>> parameters = new ArrayList<Class<?>>();
@@ -86,7 +86,7 @@ public class ProducerMethodBeanBuilder<T
WebBeansUtil.configuredProducerSpecializedName(bean,
annotatedMethod.getJavaMember(), superMethod);
*/
- getBean().setSpecializedBean(true);
+ bean.setSpecializedBean(true);
}
/**
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerMethodProducer.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerMethodProducer.java?rev=1436941&r1=1436940&r2=1436941&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerMethodProducer.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerMethodProducer.java
Tue Jan 22 14:15:41 2013
@@ -52,6 +52,11 @@ public class ProducerMethodProducer<T, P
this.disposalMethod = disposerMethod;
}
+ public void setOwner(Bean<P> owner)
+ {
+ this.owner = owner;
+ }
+
public void setDisposalMethod(AnnotatedMethod<P> disposalMethod)
{
this.disposalMethod = disposalMethod;
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1436941&r1=1436940&r2=1436941&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Tue Jan 22 14:15:41 2013
@@ -106,6 +106,7 @@ import org.apache.webbeans.inject.Altern
import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.plugins.PluginLoader;
import org.apache.webbeans.portable.ProducerFieldProducer;
+import org.apache.webbeans.portable.ProducerMethodProducer;
import org.apache.webbeans.portable.events.discovery.ErrorStack;
import org.apache.webbeans.portable.events.generics.GProcessAnnotatedType;
import org.apache.webbeans.portable.events.generics.GProcessBean;
@@ -759,10 +760,21 @@ public final class WebBeansUtil
+ " may not explicitly declare a bean name");
}
- comp.setSpecializedBean(true);
+ }
+ comp.setSpecializedBean(true);
+ for (Bean<?> bean:
webBeansContext.getBeanManagerImpl().getComponents())
+ {
+ if (bean instanceof ProducerMethodBean)
+ {
+ ProducerMethodBean<?> producerBean =
(ProducerMethodBean<?>)bean;
+ if (producerBean.getParent() == superBean &&
producerBean.getProducer() instanceof ProducerMethodProducer)
+ {
+ ProducerMethodProducer<?, ?> producer =
(ProducerMethodProducer<?, ?>) producerBean.getProducer();
+ producer.setOwner((Bean) comp);
+ }
+ }
}
}
-
else
{
throw new InconsistentSpecializationException("WebBean
component class : " + specializedClass.getName()