[weld-dev] [cdi-dev] Shared dependent instance injection with circular reference through decorator
Pete Muir
pmuir at redhat.com
Tue May 24 13:02:24 EDT 2011
Move to Weld-dev as this is a bug in Weld, not the spec.
Yes, I can reproduce, can you file a WELD issue please?
On 24 May 2011, at 17:54, Christian Bauer wrote:
> import org.jboss.weld.environment.se.Weld;
> import org.jboss.weld.environment.se.WeldContainer;
>
> import javax.annotation.PostConstruct;
> import javax.decorator.Decorator;
> import javax.decorator.Delegate;
> import javax.enterprise.inject.Any;
> import javax.inject.Inject;
> import javax.inject.Singleton;
>
> @Singleton
> public class TestDecoratorInjection {
>
> public static final Weld weld = new Weld();
> public static final WeldContainer weldContainer = weld.initialize();
>
> public static void main(final String[] args) throws Exception {
> weldContainer.instance().select(TestDecoratorInjection.class).get().test();
> }
>
> @Inject
> Foo foo; // Dependent instance of TestDecoratorInjection
>
> void test() {
> foo.test();
> }
>
> public static class Foo {
>
> @PostConstruct
> void init() {
> System.out.println("INIT FOO");
> }
>
> @Inject
> Bar bar; // Dependent instance of Foo
>
> void print() {
> System.out.println("FOO");
> }
>
> void test() {
> bar.print();
> }
> }
>
> public static interface Bar {
> void print();
> }
>
> public static class BarImpl implements Bar {
> @Override
> public void print() {
> System.out.println("Bar");
> }
> }
>
> @Decorator
> public static abstract class BarDecorator implements Bar {
>
> @Inject
> @Delegate
> @Any
> Bar delegate;
>
> @Inject
> Foo foo; // Dependent instance of what?!
>
> @Override
> public void print() {
> foo.print();
> }
> }
> }
More information about the weld-dev
mailing list