extensionloader.java

来自「JRemoteControl is a simple Java&#8482 dr」· Java 代码 · 共 113 行

JAVA
113
字号
/* * JRemCntl - Copyright (C) 2007 Filippo Di Vattimo <fildiv@gmail.com> * See COPYING */package fildiv.jremcntl.server.core;import java.util.Hashtable;import java.util.Map;import fildiv.jremcntl.common.core.Logger;public class ExtensionLoader {	private JRemEnv env;		private ExtensionClassLoader extClsLoader;		// single factory instance		private Map factories;		protected ExtensionLoader() {		this.env = JRemEnv.getInstance();						extClsLoader = new ExtensionClassLoader();				factories = new Hashtable();	}		protected void addRepository(String repo) {		extClsLoader.addRepository(repo);			}		protected JRemExtensionFactory getCachedExtensionFactory(String className) {		return (JRemExtensionFactory) factories.get(className);	}		protected void addExtensionFactoryToCache(JRemExtensionFactory factory, String className) {		factories.put(className, factory);	}		public JRemExtension getExtension(String className) {				JRemExtensionFactory fact = getCachedExtensionFactory(className);		if (fact != null)			return createExtension(fact);				fact = createExtensionFactory(className, fact);		if (fact == null) {			if (env.isLogEnabled())				env.getLogger().info(						"Unable to create factory with class name: " + className);			return null;				}				return createExtension(fact);	}	private JRemExtensionFactory createExtensionFactory(String className, JRemExtensionFactory fact) {				Logger log = env.getLogger();				try {			Class fc = extClsLoader.loadClass(className);			fact = (JRemExtensionFactory) fc.newInstance();			addExtensionFactoryToCache(fact, className);		} catch (ClassNotFoundException e) {			log.error(e);			return null;		} catch (InstantiationException e) {			log.error(e);			return null;		} catch (IllegalAccessException e) {			log.error(e);			return null;		}				return fact;	}	private JRemExtension createExtension(JRemExtensionFactory ef) {						JRemExtension ext = ef.createExtension(createSafeEnv());				registerExtensionProperties(ext);				return ext;	}		private void registerExtensionProperties(JRemExtension ext) {				JRemProperty properties[] = ext.getProperties();		if (properties == null)			return;				JRemPropertyMapper pm = env.getPropertiesMapper();				for (int index = 0; index < properties.length; ++index) {						JRemProperty p = properties[index];			pm.registerProperty(ext.getID(), p);					}			}	protected Environment createSafeEnv() {		return new JRemExtensionEnv();			}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?