From 9fee0ec4ca0c5b7a334cc29dbb58e76c7a4c736e Mon Sep 17 00:00:00 2001 From: Michiel Van Der Kolk Date: Mon, 11 Jul 2005 15:42:37 +0000 Subject: Songdb java version, source. only 1.5 compatible git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7101 a1c6a512-1295-4272-9138-f99709370657 --- songdbj/javazoom/jl/player/FactoryRegistry.java | 129 ++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 songdbj/javazoom/jl/player/FactoryRegistry.java (limited to 'songdbj/javazoom/jl/player/FactoryRegistry.java') diff --git a/songdbj/javazoom/jl/player/FactoryRegistry.java b/songdbj/javazoom/jl/player/FactoryRegistry.java new file mode 100644 index 0000000000..8919995802 --- /dev/null +++ b/songdbj/javazoom/jl/player/FactoryRegistry.java @@ -0,0 +1,129 @@ +/* + * 11/19/04 1.0 moved to LGPL. + * 29/01/00 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + *---------------------------------------------------------------------- + */ + +package javazoom.jl.player; + +import java.util.Enumeration; +import java.util.Hashtable; + +import javazoom.jl.decoder.JavaLayerException; + +/** + * The FactoryRegistry class stores the factories + * for all the audio device implementations available in the system. + *

+ * Instances of this class are thread-safe. + * + * @since 0.0.8 + * @author Mat McGowan + */ + +public class FactoryRegistry extends AudioDeviceFactory +{ + static private FactoryRegistry instance = null; + + static synchronized public FactoryRegistry systemRegistry() + { + if (instance==null) + { + instance = new FactoryRegistry(); + instance.registerDefaultFactories(); + } + return instance; + } + + + protected Hashtable factories = new Hashtable(); + + /** + * Registers an AudioDeviceFactory instance + * with this registry. + */ + public void addFactory(AudioDeviceFactory factory) + { + factories.put(factory.getClass(), factory); + } + + public void removeFactoryType(Class cls) + { + factories.remove(cls); + } + + public void removeFactory(AudioDeviceFactory factory) + { + factories.remove(factory.getClass()); + } + + public AudioDevice createAudioDevice() throws JavaLayerException + { + AudioDevice device = null; + AudioDeviceFactory[] factories = getFactoriesPriority(); + + if (factories==null) + throw new JavaLayerException(this+": no factories registered"); + + JavaLayerException lastEx = null; + for (int i=0; (device==null) && (i