package org.wildfly.swarm.container.runtime.cdi.configurable;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
import org.wildfly.swarm.container.runtime.ConfigurableManager;
/**
* @author Bob McWhirter
*/
public class ConfigurableInjectionTarget<T> implements InjectionTarget<T> {
private final InjectionTarget<T> delegate;
private final ConfigurableManager configurableManager;
public ConfigurableInjectionTarget(InjectionTarget<T> delegate, ConfigurableManager configurableManager) {
this.delegate = delegate;
this.configurableManager = configurableManager;
}
@Override
public void inject(T instance, CreationalContext<T> ctx) {
this.delegate.inject(instance, ctx);
}
@Override
public void postConstruct(T instance) {
this.delegate.postConstruct(instance);
try {
this.configurableManager.scan(instance);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void preDestroy(T instance) {
this.delegate.preDestroy(instance);
}
@Override
public T produce(CreationalContext<T> ctx) {
return this.delegate.produce(ctx);
}
@Override
public void dispose(T instance) {
this.delegate.dispose(instance);
}
@Override
public Set<InjectionPoint> getInjectionPoints() {
return this.delegate.getInjectionPoints();
}
}