Romain did a quick fix and your code will work with that fix as well. So
with OWB trunk your code should work.
But we are currently discussing how this should be done right in OWB.
Cheers,
Arne
Am 22.11.14 15:14 schrieb "arjan tijms" unter <arjan.tijms(a)gmail.com>:
Hi
On Sat, Nov 22, 2014 at 11:23 AM, Arne Limburg
<arne.limburg(a)openknowledge.de> wrote:
> I¹ve verified, that this is a bug in OpenWebBeans.
> I've created
>
https://issues.apache.org/jira/browse/OWB-1030
> and I¹m going to fix it.
Cool, thanks! Btw, didn't Romain already fix something? His last reply
was:
>PS: BTW should work on OWB 1.5.0-SNAPSHOT now
> Btw.: You have to use the CreationalContext of the bean (the way OWB
> currently throws the "Inconsistent injection point stack" exception)
Okay, I tested whether that works on Weld too, and it does. So after
your fix the following should work on both Weld and OWB then:
public class SomeBean implements Bean<Object> {
BeanManager beanManager;
@Override
public Object create(CreationalContext<Object> creationalContext) {
Bean<InjectionPoint> bean = (Bean<InjectionPoint>)
beanManager.resolve(beanManager.getBeans(InjectionPoint.class));
InjectionPoint ip = (InjectionPoint)
beanManager.getReference(bean, InjectionPoint.class,
creationalContext);
// ...
}
// ctor assigning beanManager and other methods below
}
Kind regards,
Arjan
>
> Cheers,
> Arne
>
>
> Am 21.11.14 12:58 schrieb "arjan tijms" unter
<arjan.tijms(a)gmail.com>:
>
>>Hi,
>>
>>On Fri, Nov 21, 2014 at 10:31 AM, Jozef Hartinger <jharting(a)redhat.com>
>>wrote:
>>> Here is my understanding of Arjan's
>>> setup:
>>> [...]
>>>
>>> This is no different from a producer method injecting InjectionPoint
>>> directly.
>>
>>That's indeed the exact setup.
>>
>>On Fri, Nov 21, 2014 at 11:34 AM, Romain Manni-Bucau
>><rmannibucau(a)gmail.com> wrote:
>>> PS: BTW should work on OWB 1.5.0-SNAPSHOT now
>>
>>Wow, I'll look at the latest SNAPSHOT of OWB then. Thanks Romain!
>>
>>Kind regards,
>>Arjan
>>
>>
>>
>>
>>>
>>>
>>> On 11/21/2014 10:23 AM, Romain Manni-Bucau wrote:
>>>>
>>>> yes but what would mean any of the values? Not bound to any injection
>>>> it doesn't mean anything
>>>>
>>>>
>>>> Romain Manni-Bucau
>>>> @rmannibucau
>>>>
http://www.tomitribe.com
>>>>
http://rmannibucau.wordpress.com
>>>>
https://github.com/rmannibucau
>>>>
>>>>
>>>> 2014-11-21 10:19 GMT+01:00 Jozef Hartinger <jharting(a)redhat.com>:
>>>>>
>>>>> It means "give me an instance of type InjectionPoint and
@Default
>>>>> qualifier". In default setup this should be served by the
built-in
>>>>> Bean<InjectionPoint>".
>>>>>
>>>>>
>>>>> On 11/21/2014 10:12 AM, Romain Manni-Bucau wrote:
>>>>>>
>>>>>> @Jozef: InjectionPoint ip = getBean(InjectionPoint.class);
doesn't
>>>>>> mean anything in the absolute. So why should it be allowed?
>>>>>>
>>>>>>
>>>>>> Romain Manni-Bucau
>>>>>> @rmannibucau
>>>>>>
http://www.tomitribe.com
>>>>>>
http://rmannibucau.wordpress.com
>>>>>>
https://github.com/rmannibucau
>>>>>>
>>>>>>
>>>>>> 2014-11-21 9:57 GMT+01:00 Jozef Hartinger
<jharting(a)redhat.com>:
>>>>>>>
>>>>>>> The workaround is very ugly. Instead of going that path OWB
should
>>>>>>>be
>>>>>>> fixed
>>>>>>> to support the simple way.
>>>>>>>
>>>>>>>
>>>>>>> On 11/20/2014 11:22 PM, arjan tijms wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> On Thu, Nov 20, 2014 at 11:07 PM, Romain Manni-Bucau
>>>>>>>> <rmannibucau(a)gmail.com> wrote:
>>>>>>>>>
>>>>>>>>> Not sure what it means actually. InjectionPoint is
highly
>>>>>>>>>contextual
>>>>>>>>> so
>>>>>>>>> having an exception (not a npe of course) would make
sense to
>>>>>>>>>me.
>>>>>>>>>
>>>>>>>>> Bean#create is a "you know what you do"
from my understanding
>>>>>>>>>since
>>>>>>>>> interceptors/decorators are not supported for
instance so it
>>>>>>>>>shouldnt
>>>>>>>>> rely
>>>>>>>>> of things like that, no?
>>>>>>>>
>>>>>>>> Sure, no interceptor/decorators, but the injection point
-is-
>>>>>>>>there of
>>>>>>>> course. I can see it being set in OWB as a special
property on
>>>>>>>>the
>>>>>>>> creational context if I walk down the stack trace in a
debugger
>>>>>>>>when
>>>>>>>> my Bean#create method is being called. An injection point
is
>>>>>>>>something
>>>>>>>> that implementations of Bean could always need, for
instance to
>>>>>>>> retrieve the name of the field into which injection is
taking
>>>>>>>>place.
>>>>>>>>
>>>>>>>> Of course, it being a "you know what you do",
it's okay that it's
>>>>>>>>not
>>>>>>>> as simple as having it injected into the Bean, and that
some
>>>>>>>>extra
>>>>>>>> code is needed to obtain it. As long as there is at least
-a- way
>>>>>>>>to
>>>>>>>> get hold of it.
>>>>>>>>
>>>>>>>> The method I posted in the openings post does in fact
work, but
>>>>>>>>it
>>>>>>>> feels slightly hacky. If that's an acceptable way to
get the
>>>>>>>>injection
>>>>>>>> point, then so be it. But just wondering if it's not
something
>>>>>>>>that
>>>>>>>> works by chance and may break later.
>>>>>>>>
>>>>>>>> Kind regards,
>>>>>>>> Arjan
>>>>>>>> _______________________________________________
>>>>>>>> cdi-dev mailing list
>>>>>>>> cdi-dev(a)lists.jboss.org
>>>>>>>>
https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>>>>>
>>>>>>>> Note that for all code provided on this list, the
provider
>>>>>>>>licenses
>>>>>>>> the
>>>>>>>> code under the Apache License, Version 2
>>>>>>>> (
http://www.apache.org/licenses/LICENSE-2.0.html). For
all other
>>>>>>>>ideas
>>>>>>>> provided on this list, the provider waives all patent and
other
>>>>>>>> intellectual
>>>>>>>> property rights inherent in such information.
>>>>>>>
>>>>>>>
>>>
>>_______________________________________________
>>cdi-dev mailing list
>>cdi-dev(a)lists.jboss.org
>>https://lists.jboss.org/mailman/listinfo/cdi-dev
>>
>>Note that for all code provided on this list, the provider licenses the
>>code under the Apache License, Version 2
>>(http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas
>>provided on this list, the provider waives all patent and other
>>intellectual property rights inherent in such information.
>