📄 extensionloader.java
字号:
/* * 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -