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