package com.brightgenerous.datasource; import java.util.ArrayList; import java.util.List; import com.google.inject.Injector; public class CompositeDestroyer implements Destroyer { private final List<Destroyer> delegs; public CompositeDestroyer(List<Destroyer> delegs) { this.delegs = new ArrayList<>(); add(delegs); } public CompositeDestroyer(Destroyer... delegs) { this.delegs = new ArrayList<>(); add(delegs); } public CompositeDestroyer add(List<Destroyer> delegs) { if ((delegs != null) && !delegs.isEmpty()) { for (Destroyer d : delegs) { if (d != null) { this.delegs.add(d); } } } return this; } public CompositeDestroyer add(Destroyer[] delegs) { if ((delegs != null) && (0 < delegs.length)) { List<Destroyer> ds = new ArrayList<>(delegs.length); for (Destroyer d : delegs) { ds.add(d); } add(ds); } return this; } public CompositeDestroyer add(Destroyer deleg, Destroyer... delegs) { List<Destroyer> ds = new ArrayList<>(((delegs == null) ? 0 : delegs.length) + 1); ds.add(deleg); if ((delegs != null) && (0 < delegs.length)) { for (Destroyer d : delegs) { ds.add(d); } } return add(ds); } @Override public void destroy(Injector injector) { for (Destroyer deleg : delegs) { deleg.destroy(injector); } } }