[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