public void addGlobalClassData(GlobalClassData globalCD) { globalClassDatas.put(globalCD.getClassName(), globalCD); removedGlobalClassDatas.remove(globalCD.getClassName()); } public void removeGlobalClassData(GlobalClassData globalCD) {
public static ClassLoader getGlobalClassLoader(Repository repository, String className) { GlobalClassData globalClassData = repository.getGlobalClassData(className); if (globalClassData != null) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Class " + className + " is defined as a global class"); } if (!globalClassLoaders.containsKey(className)) { Map<String, byte[]> datas = new HashMap<String, byte[]>(); datas.put(globalClassData.getClassName(), globalClassData.getClassData()); BonitaClassLoader bonitaClassLoader = new BonitaClassLoader(datas); globalClassLoaders.put(className, bonitaClassLoader); if (LOG.isLoggable(Level.FINE)) { LOG.fine("BonitaClassLoader added to globalClassLoaders for class " + className); } } return globalClassLoaders.get(className); } return null; }
public Class< ? > findClass(String name) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Looking for class " + name + "... "); } Repository repository = EngineEnvTool.getRepository(); GlobalClassData globalClassData = repository.getGlobalClassData(name); try { if (globalClassData != null) { byte[] classData = globalClassData.getClassData(); Class< ? > clazz = defineClass(name, classData, 0, classData.length); isEmpty = false; return clazz; } if (LOG.isLoggable(Level.FINE)) { LOG.fine("class " + name + " not found."); } return null; } catch (Throwable e) { throw new BonitaRuntimeException("Problem while loading class with name : " + name, e); } }
public void deployClass(final byte[] clazz) throws DeploymentException { FacadeUtil.checkArgsNotNull(clazz); String className; try { className = Tool.visitClass(clazz).getClassName(); } catch (final ArrayIndexOutOfBoundsException e) { throw new DeploymentException("The byte table is not correct parameter."); } final Repository repository = EnvTool.getRepository(); final GlobalClassData globalClassData = repository.getGlobalClassData(className); if (globalClassData != null) { // this class was already deployed throw new DeploymentException("There is already a deployed class with this name: ", className); } repository.storeGlobalClassData(new GlobalClassData(className, clazz)); }
public void removeGlobalClassData(GlobalClassData globalCD) { String className = globalCD.getClassName(); removedGlobalClassDatas.put(className, globalCD); globalClassDatas.remove(className); } public boolean isGlobalClassDataRemoved(String className) {