You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/03/06 01:02:22 UTC
svn commit: r1297301 -
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Author: rmannibucau
Date: Tue Mar 6 00:02:21 2012
New Revision: 1297301
URL: http://svn.apache.org/viewvc?rev=1297301&view=rev
Log:
ability to get injection in dynamic proxy handler + implicit injection of the proxies interface
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1297301&r1=1297300&r2=1297301&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java Tue Mar 6 00:02:21 2012
@@ -1279,11 +1279,27 @@ public class BeanContext extends Deploym
// Create bean instance
final Object beanInstance;
- final InjectionProcessor injectionProcessor = new InjectionProcessor(beanConstructor.create(creationalContext), this.getInjections(), InjectionProcessor.unwrap(ctx));
+ final InjectionProcessor injectionProcessor;
if (!isDynamicallyImplemented()) {
+ injectionProcessor = new InjectionProcessor(beanConstructor.create(creationalContext), getInjections(), InjectionProcessor.unwrap(ctx));
beanInstance = injectionProcessor.createInstance();
inject(beanInstance, creationalContext);
} else {
+ // update target
+ final List<Injection> newInjections = new ArrayList<Injection>();
+ for (Injection injection : getInjections()) {
+ if (beanClass.equals(injection.getTarget())) {
+ final Injection updated = new Injection(injection.getJndiName(), injection.getName(), beanDefinition.getBeanClass());
+ newInjections.add(updated);
+ } else {
+ newInjections.add(injection);
+ }
+ }
+ injections.clear();
+ injections.addAll(newInjections);
+
+ injectionProcessor = new InjectionProcessor(beanConstructor.create(creationalContext), injections, InjectionProcessor.unwrap(ctx));
+ injectionProcessor.setProperty("implementingInterfaceClass", beanClass);
InvocationHandler handler = (InvocationHandler) injectionProcessor.createInstance();
beanInstance = DynamicProxyImplFactory.newProxy(this, handler);
inject(handler, creationalContext);
Re: svn commit: r1297301 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Posted by Romain Manni-Bucau <rm...@gmail.com>.
i don't use @Resource but a name convention. It is not perfect but as we
can inject Class<?> the only way could be to add a custom type which will
be useless.
- Romain
2012/3/9 David Blevins <da...@gmail.com>
>
> On Mar 9, 2012, at 1:46 AM, Romain Manni-Bucau wrote:
>
> > Hi David,
> >
> > it was not managed by CDI and injections was not working so well.
>
> Sounds like we need a JIRA for this titled "@Inject support for @Proxy
> bean handlers"
>
> A unit test might be great for that as well. The loop that recreates all
> the injections looks a little fishy and could probably be improved, but I
> don't breaking the untested code.
>
> > i added too a way to inject the interface because when you are doing a
> > little bit generic handler you often need it.
>
> Are we reusing @Resource for that? How do we identify the field to do the
> injection upon?
>
> > Do you see any issue with this change?
>
> Nope. Just trying to understand. With the volume of commits, there's no
> possible way I can fully digest them all in a short period of time, so
> asking questions :)
>
>
> -David
>
> > 2012/3/9 David Blevins <da...@gmail.com>
> >
> >> I thought we already supported injection on the handler. What problem
> is
> >> this aimed at?
> >>
> >> -David
> >>
> >> On Mar 5, 2012, at 6:02 PM, rmannibucau@apache.org wrote:
> >>
> >>> Author: rmannibucau
> >>> Date: Tue Mar 6 00:02:21 2012
> >>> New Revision: 1297301
> >>>
> >>> URL: http://svn.apache.org/viewvc?rev=1297301&view=rev
> >>> Log:
> >>> ability to get injection in dynamic proxy handler + implicit injection
> >> of the proxies interface
> >>>
> >>> Modified:
> >>>
> >>
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> >>>
> >>> Modified:
> >>
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> >>> URL:
> >>
> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1297301&r1=1297300&r2=1297301&view=diff
> >>>
> >>
> ==============================================================================
> >>> ---
> >>
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> >> (original)
> >>> +++
> >>
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> >> Tue Mar 6 00:02:21 2012
> >>> @@ -1279,11 +1279,27 @@ public class BeanContext extends Deploym
> >>>
> >>> // Create bean instance
> >>> final Object beanInstance;
> >>> - final InjectionProcessor injectionProcessor = new
> >> InjectionProcessor(beanConstructor.create(creationalContext),
> >> this.getInjections(), InjectionProcessor.unwrap(ctx));
> >>> + final InjectionProcessor injectionProcessor;
> >>> if (!isDynamicallyImplemented()) {
> >>> + injectionProcessor = new
> >> InjectionProcessor(beanConstructor.create(creationalContext),
> >> getInjections(), InjectionProcessor.unwrap(ctx));
> >>> beanInstance = injectionProcessor.createInstance();
> >>> inject(beanInstance, creationalContext);
> >>> } else {
> >>> + // update target
> >>> + final List<Injection> newInjections = new
> >> ArrayList<Injection>();
> >>> + for (Injection injection : getInjections()) {
> >>> + if (beanClass.equals(injection.getTarget())) {
> >>> + final Injection updated = new
> >> Injection(injection.getJndiName(), injection.getName(),
> >> beanDefinition.getBeanClass());
> >>> + newInjections.add(updated);
> >>> + } else {
> >>> + newInjections.add(injection);
> >>> + }
> >>> + }
> >>> + injections.clear();
> >>> + injections.addAll(newInjections);
> >>> +
> >>> + injectionProcessor = new
> >> InjectionProcessor(beanConstructor.create(creationalContext),
> injections,
> >> InjectionProcessor.unwrap(ctx));
> >>> +
> >> injectionProcessor.setProperty("implementingInterfaceClass", beanClass);
> >>> InvocationHandler handler = (InvocationHandler)
> >> injectionProcessor.createInstance();
> >>> beanInstance = DynamicProxyImplFactory.newProxy(this,
> >> handler);
> >>> inject(handler, creationalContext);
> >>>
> >>>
> >>>
> >>
> >>
>
>
Re: svn commit: r1297301 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Posted by David Blevins <da...@gmail.com>.
On Mar 9, 2012, at 1:46 AM, Romain Manni-Bucau wrote:
> Hi David,
>
> it was not managed by CDI and injections was not working so well.
Sounds like we need a JIRA for this titled "@Inject support for @Proxy bean handlers"
A unit test might be great for that as well. The loop that recreates all the injections looks a little fishy and could probably be improved, but I don't breaking the untested code.
> i added too a way to inject the interface because when you are doing a
> little bit generic handler you often need it.
Are we reusing @Resource for that? How do we identify the field to do the injection upon?
> Do you see any issue with this change?
Nope. Just trying to understand. With the volume of commits, there's no possible way I can fully digest them all in a short period of time, so asking questions :)
-David
> 2012/3/9 David Blevins <da...@gmail.com>
>
>> I thought we already supported injection on the handler. What problem is
>> this aimed at?
>>
>> -David
>>
>> On Mar 5, 2012, at 6:02 PM, rmannibucau@apache.org wrote:
>>
>>> Author: rmannibucau
>>> Date: Tue Mar 6 00:02:21 2012
>>> New Revision: 1297301
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1297301&view=rev
>>> Log:
>>> ability to get injection in dynamic proxy handler + implicit injection
>> of the proxies interface
>>>
>>> Modified:
>>>
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
>>>
>>> Modified:
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
>>> URL:
>> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1297301&r1=1297300&r2=1297301&view=diff
>>>
>> ==============================================================================
>>> ---
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
>> (original)
>>> +++
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
>> Tue Mar 6 00:02:21 2012
>>> @@ -1279,11 +1279,27 @@ public class BeanContext extends Deploym
>>>
>>> // Create bean instance
>>> final Object beanInstance;
>>> - final InjectionProcessor injectionProcessor = new
>> InjectionProcessor(beanConstructor.create(creationalContext),
>> this.getInjections(), InjectionProcessor.unwrap(ctx));
>>> + final InjectionProcessor injectionProcessor;
>>> if (!isDynamicallyImplemented()) {
>>> + injectionProcessor = new
>> InjectionProcessor(beanConstructor.create(creationalContext),
>> getInjections(), InjectionProcessor.unwrap(ctx));
>>> beanInstance = injectionProcessor.createInstance();
>>> inject(beanInstance, creationalContext);
>>> } else {
>>> + // update target
>>> + final List<Injection> newInjections = new
>> ArrayList<Injection>();
>>> + for (Injection injection : getInjections()) {
>>> + if (beanClass.equals(injection.getTarget())) {
>>> + final Injection updated = new
>> Injection(injection.getJndiName(), injection.getName(),
>> beanDefinition.getBeanClass());
>>> + newInjections.add(updated);
>>> + } else {
>>> + newInjections.add(injection);
>>> + }
>>> + }
>>> + injections.clear();
>>> + injections.addAll(newInjections);
>>> +
>>> + injectionProcessor = new
>> InjectionProcessor(beanConstructor.create(creationalContext), injections,
>> InjectionProcessor.unwrap(ctx));
>>> +
>> injectionProcessor.setProperty("implementingInterfaceClass", beanClass);
>>> InvocationHandler handler = (InvocationHandler)
>> injectionProcessor.createInstance();
>>> beanInstance = DynamicProxyImplFactory.newProxy(this,
>> handler);
>>> inject(handler, creationalContext);
>>>
>>>
>>>
>>
>>
Re: svn commit: r1297301 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi David,
it was not managed by CDI and injections was not working so well.
i added too a way to inject the interface because when you are doing a
little bit generic handler you often need it.
Do you see any issue with this change?
- Romain
2012/3/9 David Blevins <da...@gmail.com>
> I thought we already supported injection on the handler. What problem is
> this aimed at?
>
> -David
>
> On Mar 5, 2012, at 6:02 PM, rmannibucau@apache.org wrote:
>
> > Author: rmannibucau
> > Date: Tue Mar 6 00:02:21 2012
> > New Revision: 1297301
> >
> > URL: http://svn.apache.org/viewvc?rev=1297301&view=rev
> > Log:
> > ability to get injection in dynamic proxy handler + implicit injection
> of the proxies interface
> >
> > Modified:
> >
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> >
> > Modified:
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> > URL:
> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1297301&r1=1297300&r2=1297301&view=diff
> >
> ==============================================================================
> > ---
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> (original)
> > +++
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> Tue Mar 6 00:02:21 2012
> > @@ -1279,11 +1279,27 @@ public class BeanContext extends Deploym
> >
> > // Create bean instance
> > final Object beanInstance;
> > - final InjectionProcessor injectionProcessor = new
> InjectionProcessor(beanConstructor.create(creationalContext),
> this.getInjections(), InjectionProcessor.unwrap(ctx));
> > + final InjectionProcessor injectionProcessor;
> > if (!isDynamicallyImplemented()) {
> > + injectionProcessor = new
> InjectionProcessor(beanConstructor.create(creationalContext),
> getInjections(), InjectionProcessor.unwrap(ctx));
> > beanInstance = injectionProcessor.createInstance();
> > inject(beanInstance, creationalContext);
> > } else {
> > + // update target
> > + final List<Injection> newInjections = new
> ArrayList<Injection>();
> > + for (Injection injection : getInjections()) {
> > + if (beanClass.equals(injection.getTarget())) {
> > + final Injection updated = new
> Injection(injection.getJndiName(), injection.getName(),
> beanDefinition.getBeanClass());
> > + newInjections.add(updated);
> > + } else {
> > + newInjections.add(injection);
> > + }
> > + }
> > + injections.clear();
> > + injections.addAll(newInjections);
> > +
> > + injectionProcessor = new
> InjectionProcessor(beanConstructor.create(creationalContext), injections,
> InjectionProcessor.unwrap(ctx));
> > +
> injectionProcessor.setProperty("implementingInterfaceClass", beanClass);
> > InvocationHandler handler = (InvocationHandler)
> injectionProcessor.createInstance();
> > beanInstance = DynamicProxyImplFactory.newProxy(this,
> handler);
> > inject(handler, creationalContext);
> >
> >
> >
>
>
Re: svn commit: r1297301 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Posted by David Blevins <da...@gmail.com>.
I thought we already supported injection on the handler. What problem is this aimed at?
-David
On Mar 5, 2012, at 6:02 PM, rmannibucau@apache.org wrote:
> Author: rmannibucau
> Date: Tue Mar 6 00:02:21 2012
> New Revision: 1297301
>
> URL: http://svn.apache.org/viewvc?rev=1297301&view=rev
> Log:
> ability to get injection in dynamic proxy handler + implicit injection of the proxies interface
>
> Modified:
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
>
> Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
> URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1297301&r1=1297300&r2=1297301&view=diff
> ==============================================================================
> --- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java (original)
> +++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java Tue Mar 6 00:02:21 2012
> @@ -1279,11 +1279,27 @@ public class BeanContext extends Deploym
>
> // Create bean instance
> final Object beanInstance;
> - final InjectionProcessor injectionProcessor = new InjectionProcessor(beanConstructor.create(creationalContext), this.getInjections(), InjectionProcessor.unwrap(ctx));
> + final InjectionProcessor injectionProcessor;
> if (!isDynamicallyImplemented()) {
> + injectionProcessor = new InjectionProcessor(beanConstructor.create(creationalContext), getInjections(), InjectionProcessor.unwrap(ctx));
> beanInstance = injectionProcessor.createInstance();
> inject(beanInstance, creationalContext);
> } else {
> + // update target
> + final List<Injection> newInjections = new ArrayList<Injection>();
> + for (Injection injection : getInjections()) {
> + if (beanClass.equals(injection.getTarget())) {
> + final Injection updated = new Injection(injection.getJndiName(), injection.getName(), beanDefinition.getBeanClass());
> + newInjections.add(updated);
> + } else {
> + newInjections.add(injection);
> + }
> + }
> + injections.clear();
> + injections.addAll(newInjections);
> +
> + injectionProcessor = new InjectionProcessor(beanConstructor.create(creationalContext), injections, InjectionProcessor.unwrap(ctx));
> + injectionProcessor.setProperty("implementingInterfaceClass", beanClass);
> InvocationHandler handler = (InvocationHandler) injectionProcessor.createInstance();
> beanInstance = DynamicProxyImplFactory.newProxy(this, handler);
> inject(handler, creationalContext);
>
>
>