/* * Copyright 2010 (C) Tom Parker <thpr@users.sourceforge.net> * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package pcgen.rules.context; import java.util.Collection; import java.util.List; import pcgen.base.util.FormatManager; import pcgen.base.util.Indirect; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Loadable; import pcgen.cdom.reference.CDOMGroupRef; import pcgen.cdom.reference.CDOMSingleRef; import pcgen.cdom.reference.ManufacturableFactory; import pcgen.cdom.reference.ReferenceManufacturer; import pcgen.cdom.reference.UnconstructedListener; import pcgen.cdom.reference.UnconstructedValidator; class TrackingManufacturer<T extends Loadable> implements ReferenceManufacturer<T> { private final ReferenceManufacturer<T> rm; private final TrackingReferenceContext context; protected TrackingManufacturer(TrackingReferenceContext trc, ReferenceManufacturer<T> mfg) { context = trc; rm = mfg; } @Override public void addObject(T o, String key) { rm.addObject(o, key); } @Override public void addUnconstructedListener(UnconstructedListener listener) { rm.addUnconstructedListener(listener); } @Override public void buildDeferredObjects() { rm.buildDeferredObjects(); } @Override public void constructIfNecessary(String value) { rm.constructIfNecessary(value); } @Override public T constructNowIfNecessary(String name) { return rm.constructNowIfNecessary(name); } @Override public T constructObject(String key) { return rm.constructObject(key); } @Override public boolean containsObject(String key) { return rm.containsObject(key); } @Override public boolean forgetObject(T o) { return rm.forgetObject(o); } @Override public T getActiveObject(String key) { return rm.getActiveObject(key); } @Override public Collection<T> getAllObjects() { return rm.getAllObjects(); } @Override public CDOMGroupRef<T> getAllReference() { CDOMGroupRef<T> ref = rm.getAllReference(); context.trackReference(ref); return ref; } @Override public int getConstructedObjectCount() { return rm.getConstructedObjectCount(); } @Override public T getItemInOrder(int item) { return rm.getItemInOrder(item); } @Override public T getObject(String key) { return rm.getObject(key); } @Override public List<T> getOrderSortedObjects() { return rm.getOrderSortedObjects(); } @Override public CDOMSingleRef<T> getReference(String key) { CDOMSingleRef<T> ref = rm.getReference(key); context.trackReference(ref); return ref; } @Override public Class<T> getReferenceClass() { return rm.getReferenceClass(); } @Override public CDOMGroupRef<T> getTypeReference(String... types) { CDOMGroupRef<T> ref = rm.getTypeReference(types); context.trackReference(ref); return ref; } @Override public UnconstructedListener[] getUnconstructedListeners() { return rm.getUnconstructedListeners(); } @Override public void removeUnconstructedListener(UnconstructedListener listener) { rm.removeUnconstructedListener(listener); } @Override public void renameObject(String key, T o) { rm.renameObject(key, o); } @Override public boolean resolveReferences(UnconstructedValidator validator) { return rm.resolveReferences(validator); } @Override public boolean validate(UnconstructedValidator validator) { return rm.validate(validator); } public boolean containsUnconstructed(String name) { return rm.containsObject(name); } @Override public String getReferenceDescription() { return rm.getReferenceDescription(); } @Override public T buildObject(String name) { return rm.buildObject(name); } @Override public void fireUnconstuctedEvent(CDOMReference<?> reference) { rm.fireUnconstuctedEvent(reference); } @Override public Collection<CDOMSingleRef<T>> getReferenced() { return rm.getReferenced(); } @Override public ManufacturableFactory<T> getFactory() { return rm.getFactory(); } @Override public Collection<CDOMReference<T>> getAllReferences() { return rm.getAllReferences(); } @Override public void injectConstructed(ReferenceManufacturer<T> mfg) { mfg.injectConstructed(mfg); } @Override public void addDerivativeObject(T obj) { rm.addDerivativeObject(obj); } @Override public Collection<T> getDerivativeObjects() { return rm.getDerivativeObjects(); } @Override public T convert(String arg0) { return rm.convert(arg0); } @Override public Indirect<T> convertIndirect(String arg0) { return rm.convertIndirect(arg0); } @Override public String getIdentifierType() { return rm.getIdentifierType(); } @Override public Class<T> getManagedClass() { return rm.getManagedClass(); } @Override public String unconvert(T arg0) { return rm.unconvert(arg0); } @Override public FormatManager<?> getComponentManager() { return null; } }