package org.jactr.core.slot; /* * default logging */ import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class ProxyUniqueSlotContainer implements IUniqueSlotContainer { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(ProxyUniqueSlotContainer.class); private List<IUniqueSlotContainer> _containers; public ProxyUniqueSlotContainer(IUniqueSlotContainer container) { _containers = new ArrayList<IUniqueSlotContainer>(2); addSlotContainer(container); } @Override public String toString() { if (_containers.size() != 0) return _containers.get(0).toString(); return super.toString(); } public void addSlotContainer(IUniqueSlotContainer container) { _containers.add(container); } public ISlot getSlot(String slotName) { ISlot rtn = null; for (IUniqueSlotContainer container : _containers) { rtn = container.getSlot(slotName); if (rtn != null) break; } return rtn; } public void addSlot(ISlot slot) { throw new UnsupportedOperationException("Cannot add to a proxy container"); } public Collection<? extends ISlot> getSlots() { return getSlots(null); } public Collection<ISlot> getSlots(Collection<ISlot> slots) { if(slots==null) slots = new ArrayList<ISlot>(); for(IUniqueSlotContainer container : _containers) slots = container.getSlots(slots); return slots; } public void removeSlot(ISlot slot) { throw new UnsupportedOperationException("Cannot remove from a proxy container"); } }