/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.custom.switchon.objectactions; import org.apache.log4j.Logger; import java.util.HashSet; import java.util.Set; import de.cismet.cids.utils.interfaces.CidsBeanAction; /** * DOCUMENT ME! * * @author martin.scholl@cismet.de * @version $Revision$, $Date$ */ public final class ActionProviderFactory { //~ Static fields/initializers --------------------------------------------- private static final transient Set<CidsBeanAction> instances = new HashSet<CidsBeanAction>(); private static final transient Logger LOG = Logger.getLogger(ActionProviderFactory.class); //~ Constructors ----------------------------------------------------------- /** * Creates a new ActionProviderFactory object. */ private ActionProviderFactory() { } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param <T> DOCUMENT ME! * @param clazz DOCUMENT ME! * * @return DOCUMENT ME! */ public static <T extends CidsBeanAction> T getCidsBeanAction(final Class<T> clazz) { if (clazz == null) { return null; } T action = null; synchronized (instances) { for (final Object instance : instances) { if (instance.getClass().equals(clazz)) { action = (T)instance; break; } } if (action == null) { try { action = clazz.newInstance(); instances.add(action); } catch (final Exception ex) { LOG.warn("cannot create action", ex); // NOI18N } } } return action; } }