From: <ls...@us...> - 2006-12-12 22:19:33
|
Revision: 2903 http://jnode.svn.sourceforge.net/jnode/?rev=2903&view=rev Author: lsantha Date: 2006-12-12 14:19:32 -0800 (Tue, 12 Dec 2006) Log Message: ----------- test env. Added Paths: ----------- trunk/gui/src/test/org/jnode/test/gui/Emu.java Added: trunk/gui/src/test/org/jnode/test/gui/Emu.java =================================================================== --- trunk/gui/src/test/org/jnode/test/gui/Emu.java (rev 0) +++ trunk/gui/src/test/org/jnode/test/gui/Emu.java 2006-12-12 22:19:32 UTC (rev 2903) @@ -0,0 +1,196 @@ +package org.jnode.test.gui; + +import org.jnode.plugin.ExtensionPoint; +import org.jnode.plugin.Extension; +import org.jnode.plugin.ExtensionPointListener; +import org.jnode.plugin.PluginDescriptor; +import org.jnode.naming.InitialNaming; +import org.jnode.naming.NameSpace; +import org.jnode.driver.DeviceManager; +import org.jnode.driver.AbstractDeviceManager; +import org.jnode.driver.DeviceFinder; +import org.jnode.driver.DeviceToDriverMapper; +import org.jnode.driver.Device; +import org.jnode.driver.DriverException; +import org.jnode.shell.alias.AliasManager; +import org.jnode.shell.alias.def.DefaultAliasManager; +import org.jnode.shell.ShellManager; +import org.jnode.shell.def.DefaultShellManager; +import org.apache.log4j.Logger; + +import javax.naming.NamingException; +import javax.naming.NameAlreadyBoundException; +import javax.naming.NameNotFoundException; +import java.util.Map; +import java.util.HashMap; +import java.util.Set; +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; + +/** + * @author Levente S\u00e1ntha + */ +public class Emu { + protected static void initEnv() throws NamingException { + if(true){ + InitialNaming.setNameSpace(new NameSpace() { + private Map<Class<?>, Object> space = new HashMap<Class<?>, Object>(); + + public <T> void bind(Class<T> name, T service) throws NamingException, NameAlreadyBoundException { + if (space.get(name) != null) throw new NameAlreadyBoundException(); + space.put(name, service); + } + + public void unbind(Class<?> name) { + space.remove(name); + } + + public <T> T lookup(Class<T> name) throws NameNotFoundException { + T obj = (T) space.get(name); + if (obj == null) throw new NameNotFoundException(name.getName()); + return obj; + } + + public Set<Class<?>> nameSet() { + return space.keySet(); + } + }); + InitialNaming.bind(DeviceManager.NAME, DeviceManager.INSTANCE); + final AliasManager aliasMgr = new DefaultAliasManager(new DummyExtensionPoint()); + final ShellManager shellMgr = new DefaultShellManager(); + InitialNaming.bind(AliasManager.NAME, aliasMgr); + InitialNaming.bind(ShellManager.NAME, shellMgr); + } + } + + private static class DummyExtensionPoint implements ExtensionPoint { + public String getSimpleIdentifier() { + return "A"; + } + + public String getUniqueIdentifier() { + return "aaa"; + } + + public String getName() { + return "B"; + } + + public Extension[] getExtensions() { + return new Extension[0]; + } + + public void addListener(ExtensionPointListener listener) { + } + + public void addPriorityListener(ExtensionPointListener listener) { + } + + public void removeListener(ExtensionPointListener listener) { + } + + public PluginDescriptor getDeclaringPluginDescriptor() { + return null; + } + } + + public static class DeviceManager extends AbstractDeviceManager { + public static final Logger log = Logger.getLogger(DeviceManager.class); + + public static final DeviceManager INSTANCE = new DeviceManager(); + + private List<DeviceFinder> finders = new ArrayList<DeviceFinder>(); + + private List<DeviceToDriverMapper> mappers = new ArrayList<DeviceToDriverMapper>(); + + private DeviceManager() { + } + + public void removeAll() { + finders.clear(); + mappers.clear(); + + for (Device device : getDevices()) { + try { + unregister(device); + } catch (DriverException e) { + log.error("can't unregister " + device); + } + } + } + + public void add(DeviceFinder finder, DeviceToDriverMapper mapper) { + boolean doStart = false; + + if (!finders.contains(finder)) { + finders.add(finder); + doStart = true; + } + + if (!mappers.contains(mapper)) { + mappers.add(mapper); + doStart = true; + } + + if (doStart) { + start(); + } + } + + /** + * Start this manager + */ + final public void start() { + // Thread thread = new Thread() + // { + // public void run() + // { + log.debug("Loading extensions ..."); + loadExtensions(); + log.debug("Extensions loaded !"); + // } + // }; + // thread.start(); + + try { + // must be called before findDeviceDrivers + log.debug("findDevices ..."); + findDevices(); + + log.debug("findDeviceDrivers ..."); + findDeviceDrivers(); + + log.debug("StubDeviceManager initialized !"); + } catch (InterruptedException e) { + log.fatal("can't find devices", e); + } + } + + /** + * Refresh the list of finders, based on the mappers extension-point. + * + * @param finders + */ + protected final void refreshFinders(List<DeviceFinder> finders) { + log.info("refreshFinders"); + finders.clear(); + finders.addAll(this.finders); + } + + /** + * Refresh the list of mappers, based on the mappers extension-point. + * + * @param mappers + */ + protected final void refreshMappers(List<DeviceToDriverMapper> mappers) { + log.info("refreshMappers"); + mappers.clear(); + mappers.addAll(this.mappers); + + // Now sort them + Collections.sort(mappers, MapperComparator.INSTANCE); + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |