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();
}
}
}