package org.jboss.as.webservices.dmr;
import java.util.List;
import org.jboss.msc.inject.InjectionException;
import org.jboss.msc.inject.Injector;
import org.jboss.msc.inject.RetainingInjector;
import org.jboss.msc.value.Value;
public final class ListInjector<T> extends RetainingInjector<T> implements Injector<T> {
private final List<T> list;
public ListInjector(final List<T> list) {
this.list = list;
}
/** {@inheritDoc} */
public void inject(final T value) throws InjectionException {
synchronized (list) {
if (value != null) {
list.add(value);
}
super.inject(value);
}
}
/** {@inheritDoc} */
public void uninject() {
synchronized (list) {
try {
final Value<T> storedValue = getStoredValue();
if (storedValue != null) list.remove(storedValue.getValue());
} finally {
super.uninject();
}
}
}
}