⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javascriptclassloader.java

📁 AJAX_aptana_update 关于AJAX的Eclipse插件。可以在这里下载的
💻 JAVA
字号:
/** * Copyright (c) 2005-2006 Aptana, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html. If redistributing this code, * this entire header must remain intact. */package org.eclipse.eclipsemonkey.lang.javascript;import java.io.IOException;import java.net.URL;import java.util.ArrayList;import java.util.Enumeration;import java.util.Iterator;import org.osgi.framework.Bundle;/** * @author Kevin Lindsey based on code by Patrick Mueller */public class JavaScriptClassLoader extends ClassLoader{	private ArrayList _bundles;	/**	 * ScriptClassLoader	 */	public JavaScriptClassLoader()	{		super(JavaScriptClassLoader.class.getClassLoader());		this._bundles = new ArrayList();	}	/**	 * addBundle	 *	 * @param bundle	 */	public void addBundle(Bundle bundle)	{		if (bundle == null)		{			throw new IllegalArgumentException("ScriptClassLoader_Bundle_Not_Defined");		}				if (this._bundles.contains(bundle) == false)		{			this._bundles.add(bundle);		}	}	/**	 * findClass	 * 	 * @param name	 * @return Class	 * @throws ClassNotFoundException	 */	protected Class findClass(String name) throws ClassNotFoundException	{		Class result = this.loadClassFromBundles(name);		if (result == null)		{			String message = "ScriptClassLoader_Unable_To_Find_Class: " + name;						throw new ClassNotFoundException(message);		}		return result;	}		/**	 * findResource	 * 	 * @param name	 * @return URL	 */	protected URL findResource(String name)	{		URL result = super.findResource(name);		if (result == null)		{			Iterator iterator = this._bundles.iterator();						while (iterator.hasNext())			{				Bundle bundle = (Bundle) iterator.next();								result = bundle.getResource(name);				if (result != null)				{					break;				}			}		}		return result;	}	/**	 * findResources	 * 	 * @param name	 * @return Enumeration	 * @throws IOException	 */	protected Enumeration findResources(String name) throws IOException	{		Enumeration result = super.findResources(name);		if (result == null)		{			Iterator iterator = this._bundles.iterator();						while (iterator.hasNext())			{				Bundle bundle = (Bundle) iterator.next();								result = bundle.getResources(name);				if (result != null)				{					break;				}			}		}		if (result == null)		{			String message = "ScriptClassLoader_Unable_To_Find_Resource: " + name;						throw new IOException(message);		}		return result;	}	/**	 * loadClass	 * 	 * @param name	 * @return Class	 * @throws ClassNotFoundException	 */	public Class loadClass(String name) throws ClassNotFoundException	{		Class result = super.loadClass(name);		if (result == null)		{			result = this.loadClassFromBundles(name);		}		if (result == null)		{			String message = "ScriptClassLoader_Unable_To_Load_Class: " + name;						throw new ClassNotFoundException(message);		}		return result;	}	/**	 * loadClass	 * 	 * @param name	 * @param resolve	 * @return Class	 * @throws ClassNotFoundException	 */	protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException	{		Class result = super.loadClass(name, resolve);		if (result == null)		{			result = this.loadClassFromBundles(name);		}		if (result == null)		{			String message = "ScriptClassLoader_Unable_To_Load_Class: " + name;						throw new ClassNotFoundException(message);		}		return result;	}	/**	 * loadClassFromBundles	 * 	 * @param name	 * @return Class	 * @throws ClassNotFoundException	 */	private Class loadClassFromBundles(String name)	{		Class result = null;		Iterator iterator = this._bundles.iterator();		while (iterator.hasNext())		{			Bundle bundle = (Bundle) iterator.next();			try			{				result = bundle.loadClass(name);			}			catch(ClassNotFoundException e)			{			}			if (result != null)			{				break;			}		}		return result;	}}

⌨️ 快捷键说明

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