package org.jactr.core.utils.collections; /* * default logging */ import java.util.Collection; import java.util.concurrent.ConcurrentSkipListSet; import org.apache.commons.collections.collection.CompositeCollection; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jactr.core.utils.recyclable.AbstractThreadLocalRecyclableFactory; import org.jactr.core.utils.recyclable.RecyclableFactory; public class CompositeCollectionFactory { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(CompositeCollectionFactory.class); static private RecyclableFactory<CompositeCollection> _factory = new AbstractThreadLocalRecyclableFactory<CompositeCollection>() { @SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected void cleanUp( CompositeCollection obj) { for (Object set : obj .getCollections()) { obj.removeComposited((Collection) set); if (set instanceof ConcurrentSkipListSet) SkipListSetFactory .recycle((ConcurrentSkipListSet) set); } } @Override protected CompositeCollection instantiate( Object... params) { return new CompositeCollection(); } @Override protected void release( CompositeCollection obj) { // noop } }; static public CompositeCollection newInstance() { return _factory.newInstance(); } static public void recycle(CompositeCollection set) { _factory.recycle(set); } }