diff options
Diffstat (limited to 'plugins/org.eclipse.jem.proxy/proxyide/org/eclipse/jem/internal/proxy/ide/IDEProxyFactoryRegistry.java')
-rw-r--r-- | plugins/org.eclipse.jem.proxy/proxyide/org/eclipse/jem/internal/proxy/ide/IDEProxyFactoryRegistry.java | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/plugins/org.eclipse.jem.proxy/proxyide/org/eclipse/jem/internal/proxy/ide/IDEProxyFactoryRegistry.java b/plugins/org.eclipse.jem.proxy/proxyide/org/eclipse/jem/internal/proxy/ide/IDEProxyFactoryRegistry.java deleted file mode 100644 index 80493d548..000000000 --- a/plugins/org.eclipse.jem.proxy/proxyide/org/eclipse/jem/internal/proxy/ide/IDEProxyFactoryRegistry.java +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2005 IBM Corporation and others. - * 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 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jem.internal.proxy.ide; -/* - * $RCSfile: IDEProxyFactoryRegistry.java,v $ - * $Revision: 1.12 $ $Date: 2005/08/24 20:39:06 $ - */ - -import java.net.URL; -import java.net.URLClassLoader; -import java.util.*; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.runtime.Platform; -import org.osgi.framework.Bundle; - -import org.eclipse.jem.internal.proxy.common.IVMServer; -import org.eclipse.jem.internal.proxy.core.*; -/** - * This implementation runs the Beans inside the Eclipse IDE - * It should only be used by plugins that can guarantee their their beans do - * not change during the lifetime of the IDE and can run at the same JDK level - * that the Eclipse IDE is running - */ - -public class IDEProxyFactoryRegistry extends BaseProxyFactoryRegistry implements IVMServer { - - public static final String IDE_REGISTRY_TYPE_ID = "org.eclipse.jem.IDE"; //$NON-NLS-1$ - protected String fName; - protected ClassLoader fClassLoader; - protected IDECallbackRegistry fCallbackRegistry; - - /* - * Special classloader that firsts tries to load from bundle then tries from url paths so - * that bundle is treated as being at the head of the url paths. - * - * @since 1.0.0 - */ - private static class IDESpecialClassLoader extends URLClassLoader { - - private Bundle bundle; - // This is the bundle that contains the IDE Eclipse code. - // This must be checked first because there are IDE specific stuff that is used on the "remote vm" too and - // so must be common. - private Bundle ideBundle; - - public IDESpecialClassLoader(URL[] urls, Bundle bundle) { - super(urls, null); - ideBundle = ProxyPlugin.getPlugin().getBundle(); - this.bundle = bundle; - } - - public IDESpecialClassLoader(URL[] urls) { - this(urls, null); - } - - /* (non-Javadoc) - * @see java.lang.ClassLoader#findClass(java.lang.String) - */ - protected Class findClass(String name) throws ClassNotFoundException { - try { - return ideBundle.loadClass(name); - } catch (ClassNotFoundException e) { - if (bundle != null) { - try { - return bundle.loadClass(name); - } catch (ClassNotFoundException e1) { - } - } - return super.findClass(name); - } - } - - /* - * (non-Javadoc) - * - * @see java.lang.ClassLoader#findResource(java.lang.String) - */ - public URL findResource(String name) { - URL r = ideBundle.getResource(name); - if (r == null && bundle != null) - r = bundle.getResource(name); - return r != null ? r : super.findResource(name); - } -} - -/** - * Create a special loader that has the plugin classloader of the passed in plugin - * as the parent loader, plus all of the urls, plus the remotevm.jar file that is - * needed by IDE Proxy to work. - */ -public static ClassLoader createSpecialLoader(String pluginName, URL[] otherURLs) { - Bundle bundle = pluginName != null ? Platform.getBundle(pluginName) : null; - - URL[] mustHaveUrls = ProxyPlugin.getPlugin().urlLocalizeAllFromBundleAndFragments(ProxyPlugin.getPlugin().getBundle(), "vm/remotevm.jar"); //$NON-NLS-1$ - - URL[] urls = null; - if (otherURLs != null) { - urls = new URL[otherURLs.length+mustHaveUrls.length]; - System.arraycopy(mustHaveUrls, 0, urls, 0, mustHaveUrls.length); - System.arraycopy(otherURLs, 0, urls, mustHaveUrls.length, otherURLs.length); - } else - urls = mustHaveUrls; - - return bundle != null ? new IDESpecialClassLoader(urls, bundle) : new IDESpecialClassLoader(urls); -} - -public IDEProxyFactoryRegistry(String aName, ClassLoader loader) { - super(IDE_REGISTRY_TYPE_ID); - fName = aName; - fClassLoader = loader; -} - -ClassLoader getPluginClassLoader(){ - return fClassLoader; -} - -protected void registryTerminated(boolean wait){ - List runnables = null; - synchronized (this) { - runnables = shutdownRunnables; - shutdownRunnables = null; - } - if (runnables != null) { - for (Iterator itr = runnables.iterator(); itr.hasNext();) { - try { - ((Runnable) itr.next()).run(); - } catch (RuntimeException e) { - e.printStackTrace(); - } - } - } -} - -Class loadClass(String aClassName) throws ClassNotFoundException, ExceptionInInitializerError, LinkageError { - return fClassLoader.loadClass(aClassName); -} - -public ICallbackRegistry getCallbackRegistry(){ - if ( fCallbackRegistry == null ){ - fCallbackRegistry = new IDECallbackRegistry(this); - } - return fCallbackRegistry; -} - - -/** - * Get a bean proxy from the bean of the correct type. - * - * @param returnType - * @param bean - * @return - * - * @since 1.0.0 - */ -IBeanProxy getBeanProxy(Class returnType, Object bean) { - IDEStandardBeanTypeProxyFactory proxyFactory = (IDEStandardBeanTypeProxyFactory) this.getBeanTypeProxyFactory(); - if (!returnType.isPrimitive()) { - return IDEStandardBeanProxyFactory.createBeanProxy(this, bean); - } else if (returnType == Integer.TYPE) { - return proxyFactory.intType.newBeanProxy(bean); - } else if (returnType == Boolean.TYPE) { - return proxyFactory.booleanType.newBeanProxy(bean); - } else if (returnType == Float.TYPE) { - return proxyFactory.floatType.newBeanProxy(bean); - } else if (returnType == Long.TYPE) { - return proxyFactory.longType.newBeanProxy(bean); - } else if (returnType == Short.TYPE) { - return proxyFactory.shortType.newBeanProxy(bean); - } else if (returnType == Double.TYPE) { - return proxyFactory.doubleType.newBeanProxy(bean); - } else if (returnType == Byte.TYPE) { - return proxyFactory.byteType.newBeanProxy(bean); - } else if (returnType == Character.TYPE) { - return proxyFactory.charType.newBeanProxy(bean); - } else { - throw new RuntimeException("Unknown primitive type " + returnType.getName()); //$NON-NLS-1$ - } -} - -List shutdownRunnables; - -public synchronized void addShutdownListener(Runnable runnable) { - if (shutdownRunnables == null) { - shutdownRunnables = new ArrayList(); - } else if (shutdownRunnables.contains(runnable)) - return; - shutdownRunnables.add(runnable); -} - -public synchronized void removeShutdownListener(Runnable runnable) { - if (shutdownRunnables != null) - shutdownRunnables.remove(runnable); -} - -} |