Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jem.proxy/proxyRemote/org')
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/BeanProxyValueSender.java96
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/DebugModeHelper.java365
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanProxy.java63
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxy.java42
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxyFactory.java85
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConnection.java106
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanProxy.java25
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanTypeProxy.java32
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMExpressionConnection.java182
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMMethodProxy.java34
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMSpecialBeanTypeProxy.java32
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalFileConfigurationContributorController.java314
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalProxyLaunchDelegate.java475
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/MessageDialog.java331
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteMessages.java55
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteUtil.java61
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanProxy.java134
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanTypeProxy.java703
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractNumberBeanTypeProxy.java72
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAccessibleObjectProxy.java53
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAnAbstractBeanTypeProxy.java75
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanProxy.java268
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanTypeProxy.java340
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanProxy.java39
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanTypeProxy.java66
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanProxy.java45
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanTypeProxy.java73
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanProxy.java45
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanTypeProxy.java75
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanProxy.java96
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanTypeProxy.java93
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanProxy.java104
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanTypeProxy.java69
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanProxy.java45
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanTypeProxy.java85
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanProxy.java133
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanTypeProxy.java110
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackInputStream.java146
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackRegistry.java185
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackThread.java327
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanProxy.java150
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanTypeProxy.java85
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanProxy.java155
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanTypeProxy.java66
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMClassBeanTypeProxy.java75
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConnection.java342
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstantBeanProxy.java100
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorProxy.java109
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorTypeProxy.java67
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanProxy.java44
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanTypeProxy.java73
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanProxy.java133
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanTypeProxy.java98
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMExpression.java1864
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldProxy.java106
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldTypeProxy.java67
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanProxy.java44
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanTypeProxy.java74
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanProxy.java131
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanTypeProxy.java98
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInitErrorBeanTypeProxy.java469
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanProxy.java49
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanTypeProxy.java85
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanProxy.java132
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanTypeProxy.java111
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInterfaceBeanTypeProxy.java72
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInvokable.java233
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanProxy.java44
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanTypeProxy.java87
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanProxy.java131
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanTypeProxy.java115
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMasterServerThread.java172
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxy.java276
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxyFactory.java305
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodTypeProxy.java67
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMNumberBeanProxy.java106
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMPrimitiveBeanTypeProxy.java234
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyConstants.java679
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyFactoryRegistry.java476
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMRegistryController.java198
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanProxy.java44
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanTypeProxy.java84
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanProxy.java132
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanTypeProxy.java109
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyConstants.java514
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyFactory.java854
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanTypeProxyFactory.java690
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanProxy.java83
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanTypeProxy.java124
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanProxy.java214
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanTypeProxy.java68
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMVoidBeanTypeProxy.java83
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanProxy.java68
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanTypeProxy.java67
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanProxy.java71
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanTypeProxy.java67
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanProxy.java120
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanTypeProxy.java67
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRegisterAWT.java38
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanProxyFactory.java74
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanTypeProxyFactory.java82
-rw-r--r--plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/messages.properties67
102 files changed, 0 insertions, 17321 deletions
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/BeanProxyValueSender.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/BeanProxyValueSender.java
deleted file mode 100644
index 3765039ee..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/BeanProxyValueSender.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.remote;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.ProxyPlugin;
-import org.eclipse.jem.internal.proxy.core.ThrowableProxy;
-
-/**
- * Useful in REM to get the array of BeanProxyValues.
- *
- * @since 1.1.0
- */
-public class BeanProxyValueSender implements Commands.ValueSender {
- protected int index = 0;
- protected Object[] array;
- private Exception exception;
- private final REMStandardBeanProxyFactory factory;
-
- /**
- * See if there was an exception thrown during reading.
- *
- * @return an exception or <code>null</code> if no exception.
- *
- * @since 1.1.0
- */
- public Exception getException() {
- return exception;
- }
-
- public BeanProxyValueSender(REMStandardBeanProxyFactory factory) {
- this.factory = factory;
- }
- public BeanProxyValueSender(REMStandardBeanProxyFactory factory, Commands.ValueObject arrayHeader) {
- this(factory);
- initialize(arrayHeader);
- }
-
- public void initialize(Commands.ValueObject arrayHeader) {
- index = 0;
- // The array type doesn't matter, it will be an array of objects.
- // The values will either be IBeanProxies or an array, or constants.
- array = new Object[arrayHeader.anInt];
- }
-
- public void clear() {
- array = null;
- index = 0;
- }
-
- public Object[] getArray() {
- return array;
- }
-
- // A new value is being sent to the array
- // NOTE: It is important that this has been called within a transaction.
- public void sendValue(Commands.ValueObject value) {
- try {
- array[index++] = factory.getBeanProxy(value); // Add it to the array
- } catch (ThrowableProxy e) {
- // We can't stop it right away because we can't send exception on, however,
- // we can log it and save the exception.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- exception = e;
- } catch (CommandException e) {
- // We can't stop it right away because we can't send exception on, however,
- // we can log it and save the exception.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- exception = e;
- }
- }
-
- // The next entry is an array too!
- public Commands.ValueSender nestedArray(Commands.ValueObject arrayHeader) {
- BeanProxyValueSender sender = new BeanProxyValueSender(factory, arrayHeader);
- // Take the newly created array and put it into the current array.
- array[index++] = sender.getArray();
- return sender;
- }
-} \ No newline at end of file
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/DebugModeHelper.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/DebugModeHelper.java
deleted file mode 100644
index caab6436d..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/DebugModeHelper.java
+++ /dev/null
@@ -1,365 +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.remote;
-
-
-import java.lang.reflect.*;
-
-import org.eclipse.core.runtime.Platform;
-import org.osgi.framework.Bundle;
-
-import org.eclipse.jem.internal.proxy.core.ProxyPlugin;
-/**
- * This is a helper for debug mode. It allows access to
- * the workbench, if available, or AWT, if available, for
- * the debug prompts. It uses reflection so that nothing is
- * forced to be loaded or pre-reqd. That way it can run headless.
- */
-
-class DebugModeHelper {
- boolean awt = false;
- boolean console = false;
- boolean setup = false;
- java.io.InputStreamReader inReader = null;
-
- // Workbench reflections
- Object display = null;
- Constructor cMB = null;
- Field fPrimaryModel = null;
- Method fasync = null;
- Method fsync = null;
- Method fSetText = null;
- Method fSetMessage = null;
- Method fOpen = null;
- Method fGetWorkbench = null;
- Class cSWT = null;
-
-
- // AWT Reflections
- Class cMessageDialog = null;
- Method fDoit = null;
-
- protected void setupType() {
- if (setup)
- return;
-
- setup = true;
-
- // See if use system console instead. If false or not set, then try to query usage.
- console = "true".equalsIgnoreCase(Platform.getDebugOption(ProxyPlugin.getPlugin().getBundle().getSymbolicName()+ProxyRemoteUtil.IO_CONSOLE)); //$NON-NLS-1$
- if (console)
- return;
-
- try {
- // See if PlatformUI plugin available.
- Bundle uiBundle = Platform.getBundle("org.eclipse.ui"); //$NON-NLS-1$
- if (uiBundle == null) {
- setupAWT(); // UI not available, try through AWT.
- return;
- }
-
- // Setup Eclipse
- Class cPlatformUI = uiBundle.loadClass("org.eclipse.ui.PlatformUI"); //$NON-NLS-1$
- Method isWBRunning = cPlatformUI.getMethod("isWorkbenchRunning", null); //$NON-NLS-1$
- if (!((Boolean) isWBRunning.invoke(null, null)).booleanValue()) {
- setupAWT(); // UI not available, try through AWT.
- return;
- }
-
- fGetWorkbench = cPlatformUI.getMethod("getWorkbench", null); //$NON-NLS-1$
- Object w = fGetWorkbench.invoke(null, null);
-
- if (w != null) {
- Class cDisplay = uiBundle.loadClass("org.eclipse.swt.widgets.Display"); //$NON-NLS-1$
- Method fGetCurrent = cDisplay.getMethod("getCurrent", null); //$NON-NLS-1$
- Method fGetDefault = cDisplay.getMethod("getDefault", null); //$NON-NLS-1$
- fasync = cDisplay.getMethod("asyncExec", new Class[] {Runnable.class}); //$NON-NLS-1$
- fsync = cDisplay.getMethod("syncExec", new Class[] {Runnable.class}); //$NON-NLS-1$
-
- // Get the display
- display = fGetCurrent.invoke(null, null);
- if (display == null)
- display = fGetDefault.invoke(null, null);
- }
-
- if (display != null) {
- Class cShell = uiBundle.loadClass("org.eclipse.swt.widgets.Shell"); //$NON-NLS-1$
- Class cMessageBox = uiBundle.loadClass("org.eclipse.swt.widgets.MessageBox"); //$NON-NLS-1$
- cMB = cMessageBox.getConstructor(new Class[] {cShell, Integer.TYPE});
-
- fSetText = cMessageBox.getMethod("setText", new Class[] {String.class}); //$NON-NLS-1$
- fSetMessage = cMessageBox.getMethod("setMessage", new Class[] {String.class}); //$NON-NLS-1$
- fOpen = cMessageBox.getMethod("open", null); //$NON-NLS-1$
-
- cSWT = uiBundle.loadClass("org.eclipse.swt.SWT"); //$NON-NLS-1$
- fPrimaryModel = cSWT.getField("PRIMARY_MODAL"); //$NON-NLS-1$
- } else {
- setupAWT(); // UI not available, try through AWT.
- }
- } catch (NoSuchMethodException e) {
- } catch (ClassNotFoundException e) {
- } catch (IllegalAccessException e) {
- } catch (InvocationTargetException e) {
- } catch (NoSuchFieldException e) {
- }
-
- return;
-
- }
-
- protected void setupAWT() {
-
- // See if AWT is available.
- try {
- cMessageDialog = Class.forName("org.eclipse.jem.internal.proxy.remote.MessageDialog"); //$NON-NLS-1$
- fDoit = cMessageDialog.getMethod("doit", new Class[] {String.class, String.class, String.class, String.class}); //$NON-NLS-1$
- awt = true;
- return;
- } catch (ClassNotFoundException e) {
- } catch (NoSuchMethodException e) {
- }
- console = true; // No AWT either, i.e. true headless environment
- }
-
- public boolean debugMode(final String name) {
- boolean debugMode = "true".equalsIgnoreCase(Platform.getDebugOption(ProxyPlugin.getPlugin().getBundle().getSymbolicName()+ProxyRemoteUtil.DEBUG_VM)); //$NON-NLS-1$
- if (!debugMode)
- return debugMode;
-
- setupType();
-
- // See if use system console instead. If false or not set, then try to query usage.
- if (console)
- return debugModeConsole(name);
-
- if (awt)
- return debugModeAWT(name);
-
- try {
- final Field fYes = cSWT.getField("YES"); //$NON-NLS-1$
- Field fNo = cSWT.getField("NO"); //$NON-NLS-1$
- Field fIcon = cSWT.getField("ICON_QUESTION"); //$NON-NLS-1$
-
- final int style = fYes.getInt(null) | fNo.getInt(null) | fIcon.getInt(null) | fPrimaryModel.getInt(null);
- final boolean[] db = new boolean[1];
-
- fsync.invoke(display, new Object[] { new Runnable() {
- /**
- * @see java.lang.Runnable#run()
- */
- public void run() {
- try {
- Object shell = getActiveShell();
- Object mb = cMB.newInstance(new Object[] {shell, new Integer(style)});
- fSetText.invoke(mb, new Object[] {"Debug RemoteVM?"}); //$NON-NLS-1$
- fSetMessage.invoke(mb, new Object[] {"Do you want to start the remote vm ("+name+") in debug mode?"}); // Not NLS'd because this is for internal developers only //$NON-NLS-1$ //$NON-NLS-2$
-
- db[0] = fYes.get(null).equals(fOpen.invoke(mb, null));
- } catch (InstantiationException e) {
- } catch (IllegalAccessException e) {
- } catch (InvocationTargetException e) {
- }
- }
- }});
- return db[0];
- } catch (IllegalAccessException e) {
- } catch (InvocationTargetException e) {
- } catch (NoSuchFieldException e) {
- }
-
- return debugModeAWT(name);
- }
-
-
- /*
- * This must be called from within the display thread.
- */
- protected Object getActiveShell() {
- Object shell = null;
- try {
- Object w = fGetWorkbench.invoke(null, null);
- Object ww = null;
- if (w != null) {
- Class cWorkbench = w.getClass();
- Method getWorkbenchWindow = cWorkbench.getMethod("getActiveWorkbenchWindow", null); //$NON-NLS-1$
- ww = getWorkbenchWindow.invoke(w, null);
- }
- if (ww != null) {
- Class cWorkbenchWindow = ww.getClass();
- Method getShell = cWorkbenchWindow.getMethod("getShell", null); //$NON-NLS-1$
- shell = getShell.invoke(ww, null);
- }
- } catch (IllegalAccessException e) {
- } catch (InvocationTargetException e) {
- } catch (NoSuchMethodException e) {
- }
-
- return shell;
- }
-
- protected boolean debugModeAWT(String name) {
-
- // See if AWT is available.
- try {
- Integer r = (Integer) fDoit.invoke(null, new Object[] {"Debug RemoteVM?", "Do you want to start the remote vm ("+name+") in debug mode?", "Yes", "No"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- return r.intValue() == 1; // i.e. button1 or "yes" was hit.
- } catch (IllegalAccessException e) {
- } catch (InvocationTargetException e) {
- }
-
- return false; // No AWT either, i.e. headless environment, shouldn't of gotton here.
- }
-
- protected boolean debugModeConsole(String name) {
-
- // Debug through the console
- inReader = new java.io.InputStreamReader(System.in);
- System.out.println("Do you want to start the remote vm ("+name+") in debug mode? (Enter Y or N):"); //$NON-NLS-1$ //$NON-NLS-2$
- char r = ' ';
- try {
- r = Character.toLowerCase((char) inReader.read());
- // Need to flush the input reader now.
- while (inReader.ready())
- inReader.read();
- return r == 'y'; // i.e. "y" was entered.
- } catch (java.io.IOException e) {
- }
-
- return false; // Error reading, so no debugging.
- }
-
- /**
- * Return true if continue debugging.
- */
- public boolean promptPort(final int dport) {
- if (awt)
- return promptPortAWT(dport);
- else if (console)
- return promptPortConsole(dport);
-
- try {
- final Field fOK = cSWT.getField("OK"); //$NON-NLS-1$
- Field fCancel = cSWT.getField("CANCEL"); //$NON-NLS-1$
- Field fIcon = cSWT.getField("ICON_WORKING"); //$NON-NLS-1$
-
- final int style = fOK.getInt(null) | fCancel.getInt(null) | fIcon.getInt(null) | fPrimaryModel.getInt(null);
-
- final boolean[] ok = new boolean[1];
- fsync.invoke(display, new Object[] { new Runnable() {
- /**
- * @see java.lang.Runnable#run()
- */
- public void run() {
- try {
- Object shell = getActiveShell();
- Object mb = cMB.newInstance(new Object[] {shell, new Integer(style)});
- fSetText.invoke(mb, new Object[] {"Connect Debugger to RemoteVM!"}); //$NON-NLS-1$
- fSetMessage.invoke(mb, new Object[] {"You must now attach the debugger to port number "+dport+". Press OK when the debugger is attached. The program will not continue properly without the debugger being attached. Press Cancel if you could not connect the debugger. This will still cause an error, but it will clean up better."}); // Not NLS'd because this is for internal developers only //$NON-NLS-1$ //$NON-NLS-2$
- ok[0] = fOK.get(null).equals(fOpen.invoke(mb, null));
- } catch (InstantiationException e) {
- } catch (IllegalAccessException e) {
- } catch (InvocationTargetException e) {
- }
- }
- }});
- return ok[0];
- } catch (NoSuchFieldException e) {
- } catch (InvocationTargetException e) {
- } catch (IllegalAccessException e) {
- }
- return false;
- }
-
- protected boolean promptPortAWT(int dport) {
- try {
- Integer r = (Integer) fDoit.invoke(null, new Object[] {"Connect Debugger to RemoteVM!", "You must now attach the debugger to port number "+dport+". Press OK when the debugger is attached. The program will not continue properly without the debugger being attached. Press Cancel if you could not connect the debugger. This will still cause an error, but it will clean up better.", "OK", "Cancel"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- return r.intValue() == 1; // i.e. button1 or "OK" was hit.
- } catch (InvocationTargetException e) {
- } catch (IllegalAccessException e) {
- }
-
- return false;
- }
-
- protected boolean promptPortConsole(int dport) {
- System.out.println("You must now attach the debugger to port number "+dport+". Enter 'y' when the debugger is attached. The program will not continue properly without the debugger being attached. Press 'n' if you could not connect the debugger. This will still cause an error, but it will clean up better. Enter 'y' or 'n':"); //$NON-NLS-1$ //$NON-NLS-2$
- char r = ' ';
- try {
- r = Character.toLowerCase((char) inReader.read());
- while (inReader.ready())
- inReader.read();
- return r == 'y'; // i.e. "y" was entered, go on
- } catch (java.io.IOException e) {
- }
-
- return false;
- }
-
- /**
- * Display an error msg. There will only be an OK button.
- * This will always display, debug mode won't be looked at.
- * This is for errors. This will be displayed async, so this
- * may return before the msg has been displayed and answered,
- * but since the only response is OK, it doesn't really matter.
- */
- public void displayErrorMessage(final String title, final String msg) {
- setupType();
- if (console)
- displayErrorMessageConsole(title, msg);
- else if (awt)
- displayErrorMessageAWT(title, msg);
- else {
- try { // This needs to be done in display thread.
- Field fOK = cSWT.getField("OK"); //$NON-NLS-1$
- Field fIcon = cSWT.getField("ICON_ERROR"); //$NON-NLS-1$
-
- final int style = fOK.getInt(null) | fIcon.getInt(null) | fPrimaryModel.getInt(null);
- fasync.invoke(display, new Object[] { new Runnable() {
- /**
- * @see java.lang.Runnable#run()
- */
- public void run() { try { Object shell = getActiveShell();
- Object mb = cMB.newInstance(new Object[] { shell, new Integer(style)});
-
- fSetText.invoke(mb, new Object[] { title });
- fSetMessage.invoke(mb, new Object[] { msg });
- fOpen.invoke(mb, null);
- } catch (InstantiationException e) {
- } catch (IllegalAccessException e) {
- } catch (InvocationTargetException e) {
- }
- }
- }
- });
- } catch (NoSuchFieldException e) {
- } catch (InvocationTargetException e) {
- } catch (IllegalAccessException e) {
- }
- }
- }
-
- protected void displayErrorMessageConsole(String title, String msg) {
- System.out.println("Error: " + title); //$NON-NLS-1$
- System.out.println(" " + msg); //$NON-NLS-1$
- }
-
- protected void displayErrorMessageAWT(String title, String msg) {
- try {
- fDoit.invoke(null, new Object[] {title, msg, ProxyRemoteMessages.OK_7, null});
- } catch (InvocationTargetException e) {
- } catch (IllegalAccessException e) {
- }
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanProxy.java
deleted file mode 100644
index 8e0427686..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanProxy.java
+++ /dev/null
@@ -1,63 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.IBeanProxy;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * A Remote VM proxy. All IBeanProxy implementations
- * for the Remote VM must also implement this interface.
- * This is necessary for proper functioning.
- *
- * NOTE: This is an internal interface to the Remote VM Proxy.
- * It MUST not be used outside of the proxy factory family.
- */
-
-public interface IREMBeanProxy extends IBeanProxy {
- /**
- * Return the ID of this proxy
- */
- public Integer getID();
-
- /**
- * Proxy is about to be released, MUST mark it invalid.
- * This is required. Resources can also be cleaned up
- * if they are being held and need to be cleaned up.
- *
- * NOTE: This method will only be called when the proxy
- * is explicitly released. If it is simply garbage collected,
- * then this method will not be called. Simple garbage collection
- * means that no one is referencing this proxy. The proxy factory
- * will know what id this proxy was referencing and will release it
- * on the server at GC time.
- *
- * If there are resources
- * that absolutely must be released, then the finalize method
- * should be implemented to do the clean up. However, try not
- * to have this be the case. Finalize methods add overhead that is
- * usually better not to have. The better way is for any users
- * that get this kind of proxy object know to call release on
- * ProxyFactoryRegistry to release it before garbage collection.
- */
- public void release();
-
- /**
- * Render this bean for transport to the server into a Commands.ValueObject.
- * For example, a string may put a string. An id type may put out the id.
- */
- public void renderBean(Commands.ValueObject renderInto);
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxy.java
deleted file mode 100644
index 391ad309c..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxy.java
+++ /dev/null
@@ -1,42 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * All bean type proxies in remote vm must implement this interface.
- *
- * NOTE: This is an internal interface to the Remote VM Proxy.
- * It MUST not be used outside of the proxy factory family.
- */
-public interface IREMBeanTypeProxy extends IBeanTypeProxy, IREMBeanProxy {
-
-/**
- * Create a new bean proxy with the specified id.
- */
-public IREMBeanProxy newBeanProxy(Integer anID);
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract);
-
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxyFactory.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxyFactory.java
deleted file mode 100644
index 10f8b6847..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMBeanTypeProxyFactory.java
+++ /dev/null
@@ -1,85 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Interface for Remote VM Bean Type Proxy Factories.
- * All extension factories for Remote VM must implement this interface.
- */
-
-public interface IREMBeanTypeProxyFactory extends IBeanTypeProxyFactory {
-/**
- * Return a bean type proxy for the class name.
- * Return null if the extension factory doesn't handle this class.
- * Don't register any proxies returned, they will automatically be registered.
- * This should only return bean type proxies where the factory can determine
- * everything it needs, such as supertype and classID.
- * NOTE: This is implemented for the usage of the
- * standard BeanType proxy factory. It should
- * NOT be called by anyone else. They should
- * go through the IStandardBeanTypeFactory
- * instead. The standard bean type factory
- * will call this method on the appropriate
- * extension when it needs to.
- *
- * Creation date: (12/3/99 2:26:12 PM)
- */
-public IREMBeanTypeProxy getExtensionBeanTypeProxy(String typeName);
-
-/**
- * Return a bean type proxy for the class name.
- * Return null if the extension factory doesn't handle this class.
- * Don't register any proxies returned, they will automatically be registered.
- * This should only return bean type proxies where the factory can determine
- * everything it needs, such as supertype and classID.
- * NOTE: This is implemented for the usage of the
- * standard BeanType proxy factory. It should
- * NOT be called by anyone else. They should
- * go through the IStandardBeanTypeFactory
- * instead. The standard bean type factory
- * will call this method on the appropriate
- * extension when it needs to.
-
- * @param typeName
- * @param expression
- * @return
- *
- * @since 1.1.0
- */
-public IProxyBeanType getExtensionBeanTypeProxy(String typeName, IExpression expression);
-
-/**
- * Return a bean type proxy for the class id and class name.
- * Return null if the extension factory doesn't handle this class.
- * Don't register any proxies returned, they will automatically be registered.
- * This will be called in the case that a new class id was returned
- * from the server that we don't have registered yet. Implementers will
- * created a proxy out of the name and the id and return it.
- * The supertype will be passed in so that the extension factory doesn't need to
- * try to find it.
- * NOTE: This is implemented for the usage of the
- * standard BeanType proxy factory. It should
- * NOT be called by anyone else. They should
- * go through the IStandardBeanTypeFactory
- * instead. The standard bean type factory
- * will call this method on the appropriate
- * extension when it needs to.
- *
- * Creation date: (12/3/99 2:26:12 PM)
- */
-public IREMBeanTypeProxy getExtensionBeanTypeProxy(String typeName, Integer classID, IBeanTypeProxy superType);
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConnection.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConnection.java
deleted file mode 100644
index 6e7e47587..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConnection.java
+++ /dev/null
@@ -1,106 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Interface for the Remote VM Connection object.
- */
-
-public interface IREMConnection {
-
- /**
- * Did this construct correctly.
- * This is needed because an exception could be thrown in the ctor and
- * that's not a good thing to do.
- */
- public boolean isConnected();
-
- /**
- * Terminate the server.
- * WARNING: This is only here so that factory can to it. Termination should ONLY
- * be done by the Factory not any one else.
- */
- public void terminateServer();
-
- /**
- * Close the connection.
- */
- public void close();
-
- /**
- * Get the class information. Null return if not found.
- */
- public Commands.GetClassReturn getClass(String className) throws CommandException;
-
- /**
- * Get the class information from the id.
- */
- public Commands.GetClassIDReturn getClassFromID(int classID) throws CommandException;
-
-
-
- /**
- * Get object data from an id.
- */
- public void getObjectData(int objectID, Commands.ValueObject valueReturn) throws CommandException;
-
- /**
- * Get a new instance using the initialization string.
- */
- public void getNewInstance(int classID, String initString, Commands.ValueObject newInstance) throws CommandException;
-
- /**
- * Invoke the get array contents command.
- * @param arrayID
- * @param returnValue
- * @throws CommandException
- *
- * @since 1.1.0
- */
- public void getArrayContents(int arrayID, Commands.ValueObject returnValue) throws CommandException;
-
- /**
- * Invoke the method call.
- * The parms valueObject must represent an Object[] (either through ARRAY_IDS or OBJECT)
- */
- public void invokeMethod(int methodID, Commands.ValueObject invokeOn, Commands.ValueObject parms, Commands.ValueObject returnValue) throws CommandException;
-
- /**
- * Invoke the method call with method passed.
- * The parms valueObject must represent an Object[] (either through ARRAY_IDS or OBJECT)
- */
- public void invokeMethod(Commands.ValueObject classType, String methodName, Commands.ValueObject parmTypes, Commands.ValueObject invokeOn, Commands.ValueObject parms, Commands.ValueObject returnValue) throws CommandException;
-
- /**
- * Release the id. It is no longer needed on the client.
- */
- public void releaseID(int id);
-
- /**
- * Read array values as BeanProxies into valueSender.
- * @param returnValue
- * @param valueSender
- * @param allowFlag <code>true</code> to allow FLAG values, <code>false</code> if not allow flag values.
- *
- * @throws CommandException
- *
- * @since 1.1.0
- */
- public void readProxyArrayValues(Commands.ValueObject returnValue, Commands.ValueSender valueSender, boolean allowFlag) throws CommandException;
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanProxy.java
deleted file mode 100644
index dccb9d5f6..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanProxy.java
+++ /dev/null
@@ -1,25 +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.remote;
-/*
-
-
- */
-
-
-/**
- * Tag interface to indicate this proxy is a constant proxy, i.e. there
- * is no bean on the server representing this (e.g. Strings and Integers).
- */
-
-public interface IREMConstantBeanProxy extends IREMBeanProxy {
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanTypeProxy.java
deleted file mode 100644
index 2c3f9fd4a..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMConstantBeanTypeProxy.java
+++ /dev/null
@@ -1,32 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * This interface is used for any BeanType that represents a constant type bean.
- * These are types that are immutable and a copy of the actual value is kept here
- * in the client and not stored as an object id.
- */
-
-public interface IREMConstantBeanTypeProxy extends IBeanTypeProxy {
-
- /**
- * Create a new bean proxy the ValueObject passed in.
- */
- public IBeanProxy newBeanProxy(Commands.ValueObject value);
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMExpressionConnection.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMExpressionConnection.java
deleted file mode 100644
index 335fb430c..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMExpressionConnection.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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.remote;
-
-import java.io.IOException;
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * Additional function on a connection for expression tree processing.
- * Connections returned (IREMConnections) will always also implement IREMExpressionConnection,
- * but they are separated so that expression functions don't pollute the regular
- * connection interface with added commands that shouldn't be called except
- * when processing an expression. If they were called out of order, big problems
- * can occur.
- * <p>
- * To use, simply cast the IREMConnection to be an IREMExpressionConnection.
- *
- * @since 1.0.0
- */
-public interface IREMExpressionConnection extends IREMConnection {
-
- /**
- * Start expression processing.
- * @param expressionID
- * @param trace TODO
- * @throws IOException
- *
- * @since 1.0.0
- */
- public void startExpressionProcessing(int expressionID, byte trace) throws IOException;
-
- /**
- * Transfer the expression. This tells the remote vm to stop processing on the
- * given connection and return the expression processing controller for the expression.
- *
- * @param expressionID
- * @param expController
- * @throws IOException
- *
- * @since 1.1.0
- */
- public void transferExpression(int expressionID, Commands.ValueObject expController) throws CommandException;
-
- /**
- * Resume the expression on this connection.
- * @param expressionID
- * @param expController expression processor controller to use for the expression on this new connection.
- * @throws CommandException
- *
- * @since 1.1.0
- */
- public void resumeExpression(int expressionID, Commands.ValueObject expController) throws CommandException;
-
- /**
- * Push an expression command. This is the common portion of the
- * subcommand. The actual data of the command will be separately done.
- * @param expressionID
- * @param subcommand The subcommand being sent. From IInternalExpressionConstants.
- *
- * @throws IOException
- *
- * @see org.eclipse.jem.internal.proxy.initParser.tree.IInternalExpressionConstants#PUSH_TO_PROXY_EXPRESSION
- * @since 1.0.0
- */
- public void pushExpressionCommand(int expressionID, byte subcommand) throws IOException;
-
- /**
- * Push the value object to the remote side.
- *
- * @param valueObject
- * @throws CommandException
- *
- * @since 1.0.0
- */
- public void pushValueObject(Commands.ValueObject valueObject) throws CommandException;
-
- /**
- * Push just the single byte to the remote side.
- * @param abyte
- * @throws IOException
- *
- * @since 1.0.0
- */
- public void pushByte(byte abyte) throws IOException;
-
- /**
- * Push just the single int to the remote side.
- *
- * @param anInt
- * @throws IOException
- *
- * @since 1.0.0
- */
- public void pushInt(int anInt) throws IOException;
-
-
- /**
- * Push just the singe string to the remote side.
- *
- * @param aString
- * @throws IOException
- *
- * @since 1.0.0
- */
- public void pushString(String aString) throws IOException;
-
- /**
- * Push just the bool to the remote side.
- * @param aBool
- * @throws IOException
- *
- * @since 1.0.0
- */
- public void pushBoolean(boolean aBool) throws IOException;
-
- /**
- * Get the final value. It must be called after processing the proxy id resolutions even for sync (so that we can get
- * any thrown errors).
- *
- * @param result
- * @throws CommandException
- *
- * @since 1.1.0
- */
- public void getFinalValue(Commands.ValueObject result) throws CommandException;
-
- /**
- * Send the pull value command, with the proxyids of intereset. If an error
- * occurs, command exception is thrown.
- * <p>
- * After the pull value call, if no errors, the proxyids must be read, and then getFinalValue call must be sent.
- * @param expressionID
- * @param proxyids expression proxyids that request feedback or <code>null</code> if no proxy ids.
- * @param sender sender to use to process the returned proxy ids, or <code>null</code> if expecting no proxy resolutions.
- *
- * @throws CommandException
- *
- * @since 1.0.0
- */
- public void pullValue(int expressionID, Commands.ValueObject proxyids, Commands.ValueSender sender) throws CommandException;
-
- /**
- * Send the sync command, with the proxyids of intereset. If an error
- * occurs, command exception is thrown.
- * <p>
- * After the sync call, if no errors, the returned proxyids must be processed and then the final endValue call must be sent.
- *
- * @param expressionID
- * @param proxyids expression proxyids that request feedback or <code>null</code> if no proxy ids.
- * @param sender sender to use to process the proxy id resolutions, or <code>null</code> if expecting no proxy ids.
- *
- * @throws CommandException
- *
- * @since 1.0.0
- */
- public void sync(int expressionID, Commands.ValueObject proxyids, Commands.ValueSender sender) throws CommandException;
-
- /**
- * Stop expression processing.
- * @param expressionID
- *
- * @throws IOException
- *
- * @since 1.0.0
- */
- public void stopExpressionProcessing(int expressionID) throws IOException;
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMMethodProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMMethodProxy.java
deleted file mode 100644
index f56556ba9..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMMethodProxy.java
+++ /dev/null
@@ -1,34 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * This interface for REMMethodProxy allows the invokation where
- * the parms are a mixture of constant objects (i.e. can be sent
- * as values to the client) and IBeanProxies. It is only to be
- * used by other factories that want to invoke methods where
- * some of the parms are constants so that there is no need
- * create IBeanProxies for them, e.g. String. This should be
- * used with extreme care.
- */
-
-public interface IREMMethodProxy extends IMethodProxy, IREMBeanProxy {
- public IBeanProxy invokeWithParms(IBeanProxy subject, Object[] parms) throws ThrowableProxy;
-
-
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMSpecialBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMSpecialBeanTypeProxy.java
deleted file mode 100644
index 897a4ff67..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/IREMSpecialBeanTypeProxy.java
+++ /dev/null
@@ -1,32 +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.remote;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-/**
- * This is a special interface for allowing abstract
- * types to create the correct subclass types.
- * Only ones that use REMAnAbstractBeanTypeProxy
- * should implement this.
- */
-public interface IREMSpecialBeanTypeProxy {
-
- /**
- * Called by REMAnAbstractBeanTypeProxy to create a subclass of it.
- * This allows correct types to be created depending upon the
- * main super type.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract, IBeanTypeProxy superType);
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalFileConfigurationContributorController.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalFileConfigurationContributorController.java
deleted file mode 100644
index df8937b3d..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalFileConfigurationContributorController.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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.remote;
-
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jdt.core.*;
-import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
-import org.eclipse.jdt.launching.JavaRuntime;
-import org.osgi.framework.Bundle;
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
-/**
- * This version works with local files being added to the classpath, and the classpath is strings.
- *
- * @since 1.0.0
- */
-public class LocalFileConfigurationContributorController implements IConfigurationContributionController {
-
- private URL[] classpathInfo;
-
- private URL[][] bootpathInfo;
-
- private List classpath;
-
- private List prependBootpath;
-
- private List appendBootpath;
-
- private List javaLibraryPath;
-
- private ProxyLaunchSupport.LaunchInfo launchInfo;
-
- public LocalFileConfigurationContributorController(URL[] classpathInfo, URL[][] bootpathInfo, ProxyLaunchSupport.LaunchInfo launchInfo) {
- this.classpathInfo = classpathInfo;
- this.bootpathInfo = bootpathInfo;
- this.launchInfo = launchInfo;
- }
-
- public URL[] getFinalClasspath() {
- if (classpath == null)
- return classpathInfo;
- else
- return (URL[]) classpath.toArray(new URL[classpath.size()]);
- }
-
- public URL[] getFinalPrependBootpath() {
- if (prependBootpath == null)
- return bootpathInfo[0];
- else
- return (URL[]) prependBootpath.toArray(new URL[prependBootpath.size()]);
- }
-
- public URL[] getFinalAppendBootpath() {
- if (appendBootpath == null)
- return bootpathInfo[2];
- else
- return (URL[]) appendBootpath.toArray(new URL[appendBootpath.size()]);
- }
-
- public List getFinalJavaLibraryPath() {
- if (javaLibraryPath == null)
- return Collections.EMPTY_LIST;
- else
- return javaLibraryPath;
- }
-
- protected List getClasspath() {
- if (classpath == null) {
- classpath = new ArrayList(classpathInfo.length);
- addAll(classpath, classpathInfo, -1);
- }
- return classpath;
- }
-
- protected List getPrependBootpath() {
- if (prependBootpath == null) {
- if (bootpathInfo[0] != null) {
- prependBootpath = new ArrayList(bootpathInfo[0].length);
- addAll(prependBootpath, bootpathInfo[0], -1);
- } else
- prependBootpath = new ArrayList(1);
- }
- return prependBootpath;
- }
-
- protected List getAppendBootpath() {
- if (appendBootpath == null) {
- if (bootpathInfo[2] != null) {
- appendBootpath = new ArrayList(bootpathInfo[2].length);
- addAll(appendBootpath, bootpathInfo[2], -1);
- } else
- appendBootpath = new ArrayList(1);
- }
- return appendBootpath;
- }
-
- protected List getJavaLibraryPath() {
- if (javaLibraryPath == null) {
- javaLibraryPath = new ArrayList(3);
- }
- return javaLibraryPath;
- }
-
- protected void addAll(List toList, Object[] array, int loc) {
- for (int i = 0; i < array.length; i++) {
- // Need a dup check, sometimes dups come in especially during development
- if (toList.contains(array[i]))
- continue;
- if (loc == -1)
- toList.add(array[i]);
- else
- toList.add(loc++, array[i]);
- }
- }
-
- protected void addLocations(List toList, IRuntimeClasspathEntry[] entries) {
- for (int i = 0; i < entries.length; i++) {
- IRuntimeClasspathEntry entry = entries[i];
- URL location = ProxyLaunchSupport.convertStringPathToURL(entry.getLocation());
- if (location != null && !toList.contains(location))
- toList.add(location);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#getJavaProject()
- */
- public IJavaProject getJavaProject() {
- return launchInfo.getJavaProject();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#contributeProject(org.eclipse.core.resources.IProject)
- */
- public void contributeProject(IProject project) throws CoreException {
- IJavaProject jproject = JavaCore.create(project);
- IRuntimeClasspathEntry[] projPath = JavaRuntime.computeUnresolvedRuntimeClasspath(jproject);
- boolean jreContainerFound = false;
- for (int i = 0; i < projPath.length; i++) {
- IRuntimeClasspathEntry entry = projPath[i];
- if (entry.getClasspathProperty() == IRuntimeClasspathEntry.BOOTSTRAP_CLASSES
- || entry.getClasspathProperty() == IRuntimeClasspathEntry.STANDARD_CLASSES) {
- int entryKind = entry.getClasspathEntry().getEntryKind();
- String segment0 = entry.getPath().segment(0);
- if (entryKind == IClasspathEntry.CPE_CONTAINER && JavaRuntime.JRE_CONTAINER.equals(segment0)
- || entryKind == IClasspathEntry.CPE_VARIABLE && JavaRuntime.JRELIB_VARIABLE.equals(segment0)) {
- jreContainerFound = true;
- } else {
- if (jreContainerFound)
- addLocations(getAppendBootpath(), JavaRuntime.resolveRuntimeClasspathEntry(entry, jproject));
- else
- addLocations(getPrependBootpath(), JavaRuntime.resolveRuntimeClasspathEntry(entry, jproject));
- }
- } else {
- addLocations(getClasspath(), JavaRuntime.resolveRuntimeClasspathEntry(entry, jproject));
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#contributeClasspath(java.lang.String, int)
- */
- public void contributeClasspath(String classpath, int typeFlag) {
- contributeClasspath(ProxyLaunchSupport.convertStringPathToURL(classpath), typeFlag);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#contributeClasspath(java.net.URL, int)
- */
- public void contributeClasspath(URL classpathURL, int typeFlag) {
- if (classpathURL == null)
- return;
- switch (typeFlag) {
- case PREPEND_BOOT_CLASSPATH:
- if (!getPrependBootpath().contains(classpathURL))
- getPrependBootpath().add(classpathURL);
- break;
- case PREPEND_USER_CLASSPATH:
- if (!getClasspath().contains(classpathURL))
- getClasspath().add(0, classpathURL);
- break;
- case APPEND_USER_CLASSPATH:
- if (!getClasspath().contains(classpathURL))
- getClasspath().add(classpathURL);
- break;
- case APPEND_BOOT_CLASSPATH:
- if (!getAppendBootpath().contains(classpathURL))
- getAppendBootpath().add(classpathURL);
- break;
- case APPEND_JAVA_LIBRARY_PATH:
- if (!getJavaLibraryPath().contains(classpathURL))
- getJavaLibraryPath().add(classpathURL);
- break;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#contributeClasspath(org.osgi.framework.Bundle, java.lang.String,
- * int, boolean)
- */
- public void contributeClasspath(Bundle bundle, String relativePath, int typeFlag, boolean nlsLocalize) {
- // If not nls localize, or if it is java library path, then just find the one in the plugin/fragment and add it.
- if (nlsLocalize)
- contributeClasspath(ProxyPlugin.getPlugin().urlLocalizeAllFromBundleAndFragments(bundle, relativePath), typeFlag);
- else if (typeFlag == IConfigurationContributionController.APPEND_JAVA_LIBRARY_PATH) {
- if (relativePath == null || relativePath.length() == 0) {
- // PDE is not here to help us extract that @#$ dll
- JEMUtilPlugin.getLogger().log("Can't extract a directory from the root of a plugin."); //$NON-NLS-1$
- return;
- }
- URL contribution = ProxyPlugin.getPlugin().urlLocalizeFromBundleAndFragments(bundle, relativePath);
- contributeClasspath(contribution, typeFlag);
- } else {
- if (relativePath != null)
- contributeClasspath(ProxyPlugin.getPlugin().urlLocalizeFromBundleOnly(bundle, relativePath), typeFlag);
- else
- contributeClasspath(ProxyPlugin.getPlugin().urlLocalizeBundle(bundle), typeFlag);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#contributeClasspath(org.osgi.framework.Bundle,
- * org.eclipse.core.runtime.IPath, int, boolean)
- */
- public void contributeClasspath(Bundle bundle, IPath relativePath, int typeFlag, boolean nlsLocalize) {
- if (nlsLocalize)
- if (relativePath != null)
- contributeClasspath(ProxyPlugin.getPlugin().urlLocalizeAllFromBundleAndFragments(bundle, relativePath), typeFlag);
- else
- contributeClasspath(ProxyPlugin.getPlugin().urlLocalizeBundleAndFragments(bundle), typeFlag);
- else if (typeFlag == IConfigurationContributionController.APPEND_JAVA_LIBRARY_PATH) {
- if (relativePath == null || relativePath.segmentCount() == 0) {
- // PDE is not here to help us extract that @#$ dll
- JEMUtilPlugin.getLogger().log("Can't extract a directory from the root of a plugin."); //$NON-NLS-1$
- return;
- }
- URL contribution = ProxyPlugin.getPlugin().urlLocalizeFromBundleAndFragments(bundle, relativePath);
- contributeClasspath(contribution, typeFlag);
- } else {
- if (relativePath != null)
- contributeClasspath(ProxyPlugin.getPlugin().urlLocalizeFromBundleOnly(bundle, relativePath), typeFlag);
- else
- contributeClasspath(ProxyPlugin.getPlugin().urlLocalizeBundle(bundle), typeFlag);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#contributeClasspath(java.lang.String[], int)
- */
- public void contributeClasspath(String[] classpaths, int typeFlag) {
- contributeClasspath(ProxyLaunchSupport.convertStringPathsToURL(classpaths), typeFlag);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributionController#contributeClasspath(java.net.URL[], int)
- */
- public void contributeClasspath(URL[] classpathURLs, int typeFlag) {
- if (classpathURLs == null)
- return;
- switch (typeFlag) {
- case PREPEND_BOOT_CLASSPATH:
- addAll(getPrependBootpath(), classpathURLs, -1);
- break;
- case PREPEND_USER_CLASSPATH:
- addAll(getClasspath(), classpathURLs, 0);
- break;
- case APPEND_USER_CLASSPATH:
- addAll(getClasspath(), classpathURLs, -1);
- break;
- case APPEND_BOOT_CLASSPATH:
- addAll(getAppendBootpath(), classpathURLs, -1);
- break;
- case APPEND_JAVA_LIBRARY_PATH:
- addAll(getJavaLibraryPath(), classpathURLs, -1);
- break;
- }
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalProxyLaunchDelegate.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalProxyLaunchDelegate.java
deleted file mode 100644
index c59772c15..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/LocalProxyLaunchDelegate.java
+++ /dev/null
@@ -1,475 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2006 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
- *******************************************************************************/
-/*
- * $RCSfile: LocalProxyLaunchDelegate.java,v $ $Revision: 1.35 $ $Date: 2006/05/23 15:43:03 $
- */
-package org.eclipse.jem.internal.proxy.remote;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.*;
-import java.text.MessageFormat;
-import java.util.*;
-import java.util.logging.Level;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.*;
-import org.eclipse.debug.core.model.*;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.launching.*;
-
-import org.eclipse.jem.internal.proxy.common.remote.ExpressionCommands;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.remote.awt.REMRegisterAWT;
-import org.eclipse.jem.util.TimerTests;
-import org.eclipse.jem.util.logger.proxy.Logger;
-
-
-/**
- * Launch Delegate for launching Local (i.e. remote vm is on local system). Here "remote" means the
- * registry is not in the IDE but in a separate VM, and "local" means that is in on the local
- * physical machine and not on a separate machine.
- *
- * @since 1.0.0
- */
-public class LocalProxyLaunchDelegate extends AbstractJavaLaunchConfigurationDelegate {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(org.eclipse.debug.core.ILaunchConfiguration,
- * java.lang.String, org.eclipse.debug.core.ILaunch,
- * org.eclipse.core.runtime.IProgressMonitor)
- */
- public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor pm) throws CoreException {
-
- String launchKey = configuration.getAttribute(IProxyConstants.ATTRIBUTE_LAUNCH_KEY, (String) null);
- if (launchKey == null)
- abort(ProxyRemoteMessages.ProxyRemoteNoLaunchKey, null, 0);
-
- // In Eclipse, even if private, a launch will show up in the debug process tree and in the console viewer.
- // To be absolutely private, we need to remove the launch which has already been added.
- if (ProxyLaunchSupport.ATTR_PRIVATE != null && configuration.getAttribute(ProxyLaunchSupport.ATTR_PRIVATE, false))
- DebugPlugin.getDefault().getLaunchManager().removeLaunch(launch);
- if (pm == null) {
- pm = new NullProgressMonitor();
- }
-
- IJavaProject project = getJavaProject(configuration);
- String name = configuration.getAttribute(IProxyConstants.ATTRIBUTE_VM_TITLE, (String) null);
- if (name == null)
- name = MessageFormat.format(ProxyRemoteMessages.ProxyRemoteVMName, new Object[] { project != null ? project.getProject().getName() : "" }); //$NON-NLS-1$
- else
- name = MessageFormat.format(ProxyRemoteMessages.ProxyRemoteVMNameWithComment, new Object[] { project != null ? project.getProject().getName() : "", name }); //$NON-NLS-1$
-
- String stepId = "Launch VM ( " + name + " )"; //$NON-NLS-1$ //$NON-NLS-2$
- TimerTests.basicTest.startStep(stepId);
- // Problem with launch, can't have double-quotes in vmName.
- if (name.indexOf('"') != -1)
- name = name.replace('"', '\'');
-
- pm.beginTask("", 500); //$NON-NLS-1$
- pm.subTask(MessageFormat.format(ProxyRemoteMessages.ProxyRemoteLaunchVM, new Object[] { name }));
- // check for cancellation
- if (pm.isCanceled())
- return;
-
- IVMInstall vm = verifyVMInstall(configuration);
-
- IVMRunner runner = vm.getVMRunner(mode);
- if (runner == null) {
- abort(MessageFormat.format(ProxyRemoteMessages.Proxy_NoRunner_ERROR_, new Object[] { name }), null, 0);
- }
-
- File workingDir = verifyWorkingDirectory(configuration);
- String workingDirName = null;
- if (workingDir != null) {
- workingDirName = workingDir.getAbsolutePath();
- }
-
- // Environment variables
- String[] envp = DebugPlugin.getDefault().getLaunchManager().getEnvironment(configuration);
-
- // Program & VM args
- String pgmArgs = getProgramArguments(configuration);
- String vmArgs = getVMArguments(configuration);
- ExecutionArguments execArgs = new ExecutionArguments(vmArgs, pgmArgs);
-
- // VM-specific attributes
- Map vmAttributesMap = getVMSpecificAttributesMap(configuration);
-
- pm.worked(100);
-
- // Now let's get the classpaths created through the contributors.
- URL[] classpath = ProxyLaunchSupport.convertStringPathsToURL(getClasspath(configuration));
- String[][] bootpathInfoStrings = getBootpathExt(vmAttributesMap);
- URL[][] bootpathInfo = new URL[][]{
- ProxyLaunchSupport.convertStringPathsToURL(bootpathInfoStrings[0]),
- ProxyLaunchSupport.convertStringPathsToURL(bootpathInfoStrings[1]),
- ProxyLaunchSupport.convertStringPathsToURL(bootpathInfoStrings[2]),
- };
- ProxyLaunchSupport.LaunchInfo launchInfo = ProxyLaunchSupport.getInfo(launchKey);
- final IConfigurationContributor[] contributors = launchInfo.contributors;
- final LocalFileConfigurationContributorController controller =
- new LocalFileConfigurationContributorController(classpath, bootpathInfo, launchInfo);
- if (contributors != null) {
- for (int i = 0; i < contributors.length; i++) {
- // Run in safe mode so that anything happens we don't go away.
- final int ii = i;
- SafeRunner.run(new ISafeRunnable() {
- public void handleException(Throwable exception) {
- // Don't need to do anything. Platform.run logs it for me.
- }
-
- public void run() throws Exception {
- contributors[ii].contributeClasspaths(controller);
- }
- });
- }
- }
-
- // Add in the required ones by the Proxy support. These are hard-coded since they are
- // required.
- ProxyRemoteUtil.updateClassPaths(controller);
- addInFragmentLibraries(controller, launchInfo.getConfigInfo());
-
- classpath = controller.getFinalClasspath();
- if (bootpathInfo[0] != controller.getFinalPrependBootpath()) {
- if (vmAttributesMap == null)
- vmAttributesMap = new HashMap(2);
- vmAttributesMap.put(IJavaLaunchConfigurationConstants.ATTR_BOOTPATH_PREPEND, ProxyLaunchSupport.convertURLsToStrings(bootpathInfo[0]));
- }
- if (bootpathInfo[2] != controller.getFinalAppendBootpath()) {
- if (vmAttributesMap == null)
- vmAttributesMap = new HashMap(2);
- vmAttributesMap.put(IJavaLaunchConfigurationConstants.ATTR_BOOTPATH_APPEND, ProxyLaunchSupport.convertURLsToStrings(bootpathInfo[2]));
- }
-
- // check for cancellation
- if (pm.isCanceled())
- return;
- pm.worked(100);
-
- // Create VM config
- VMRunnerConfiguration runConfig =
- new VMRunnerConfiguration("org.eclipse.jem.internal.proxy.vm.remote.RemoteVMApplication", ProxyLaunchSupport.convertURLsToStrings(classpath)); //$NON-NLS-1$
-
- REMProxyFactoryRegistry registry = new REMProxyFactoryRegistry(ProxyRemoteUtil.getRegistryController(), name);
- Integer registryKey = registry.getRegistryKey();
-
- Integer bufSize = Integer.getInteger("proxyvm.bufsize"); //$NON-NLS-1$
- if (bufSize == null)
- bufSize = new Integer(16000);
-
- int masterServerPort = ProxyRemoteUtil.getRegistryController().getMasterSocketPort();
-
- // See if debug mode is requested.
- DebugModeHelper dh = new DebugModeHelper();
- boolean debugMode = dh.debugMode(name);
- boolean useNoverify = ProxyPlugin.getPlugin().getPluginPreferences().getBoolean(ProxyPlugin.PREFERENCES_VM_NOVERIFY_KEY);
-
- String[] evmArgs = execArgs.getVMArgumentsArray();
-
- int extraArgs = 4; // Number of extra standard args added (if number changes below, this must change)
- if (debugMode)
- extraArgs+=4; // Number of extra args added for debug mode (if number changes below, this must change).
- if(useNoverify)
- extraArgs++; // An extra arg added for '-noverify' flag (if number changes below, this must change).
-
- boolean useExpressionTracing = "true".equalsIgnoreCase(Platform.getDebugOption(ProxyPlugin.getPlugin().getBundle().getSymbolicName() + ProxyLaunchSupport.EXPRESSION_TRACING)); //$NON-NLS-1$
- long expressionTracingThreshold = -1;
- if (useExpressionTracing) {
- extraArgs++;
- String thresholdString = Platform.getDebugOption(ProxyPlugin.getPlugin().getBundle().getSymbolicName() + ProxyLaunchSupport.EXPRESSION_TRACEING_TIMER_THRESHOLD);
- if (thresholdString != null) {
- try {
- expressionTracingThreshold = Long.valueOf(thresholdString).longValue();
- extraArgs++;
- } catch (NumberFormatException e) {
- }
- }
- }
-
- List javaLibPaths = controller.getFinalJavaLibraryPath();
- int existingLibpaths = -1;
- if (!javaLibPaths.isEmpty()) {
- // first need to see if java lib path also specified in standard args by someone configuring the configuration by hand.
- for (int i = 0; i < evmArgs.length; i++) {
- if (evmArgs[i].startsWith("-Djava.library.path")) { //$NON-NLS-1$
- // We found one already here, save the spot so we update it later.
- existingLibpaths = i;
- break;
- }
- }
- if (existingLibpaths == -1)
- ++extraArgs; // Need to have room for one more.
- }
-
- String[] cvmArgs = new String[evmArgs.length + extraArgs];
- System.arraycopy(evmArgs, 0, cvmArgs, extraArgs, evmArgs.length); // Put existing into new list at the end.
-
- int cvmArgsCount=0;
- cvmArgs[cvmArgsCount++] = "-Dproxyvm.registryKey=" + registryKey; //$NON-NLS-1$
- cvmArgs[cvmArgsCount++] = "-Dproxyvm.masterPort=" + String.valueOf(masterServerPort); //$NON-NLS-1$
- cvmArgs[cvmArgsCount++] = "-Dproxyvm.bufsize=" + bufSize; //$NON-NLS-1$
- cvmArgs[cvmArgsCount++] = "-Dproxyvm.servername=" + name; //$NON-NLS-1$
-
- if(useNoverify)
- cvmArgs[cvmArgsCount++] = "-noverify"; //$NON-NLS-1$
-
- if (useExpressionTracing) {
- cvmArgs[cvmArgsCount++] = "-D"+ExpressionCommands.EXPRESSIONTRACE+"=true"; //$NON-NLS-1$ //$NON-NLS-2$
- if (expressionTracingThreshold != -1)
- cvmArgs[cvmArgsCount++] = "-D"+ExpressionCommands.EXPRESSIONTRACE_TIMER_THRESHOLD+'='+String.valueOf(expressionTracingThreshold); //$NON-NLS-1$
- }
-
- // If in debug mode, we need to find a port for it to use.
- int dport = -1;
- if (debugMode) {
- dport = findUnusedLocalPort("localhost", 5000, 15000, new int[0]); //$NON-NLS-1$
- cvmArgs[cvmArgsCount++] = "-Djava.compiler=NONE"; //$NON-NLS-1$
- cvmArgs[cvmArgsCount++] = "-Xdebug"; //$NON-NLS-1$
- cvmArgs[cvmArgsCount++] = "-Xnoagent"; //$NON-NLS-1$
- cvmArgs[cvmArgsCount++] = "-Xrunjdwp:transport=dt_socket,server=y,address=" + dport; //$NON-NLS-1$
- }
-
- if (!javaLibPaths.isEmpty()) {
- StringBuffer appendTo = null;
- if (existingLibpaths != -1) {
- appendTo = new StringBuffer(evmArgs[existingLibpaths]);
- appendTo.append(File.pathSeparatorChar); // Plus a separator so we can append
- } else
- appendTo = new StringBuffer("-Djava.library.path="); //$NON-NLS-1$
- String [] libPaths = ProxyLaunchSupport.convertURLsToStrings((URL[]) javaLibPaths.toArray(new URL[javaLibPaths.size()]));
- for (int i = 0; i < libPaths.length; i++) {
- if (i != 0)
- appendTo.append(File.pathSeparator);
- appendTo.append(libPaths[i]);
- }
- if (existingLibpaths != -1)
- cvmArgs[extraArgs+existingLibpaths] = appendTo.toString();
- else
- cvmArgs[extraArgs-1] = appendTo.toString();
- }
-
- runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
- runConfig.setEnvironment(envp);
- runConfig.setVMArguments(cvmArgs);
- runConfig.setWorkingDirectory(workingDirName);
- runConfig.setVMSpecificAttributesMap(vmAttributesMap);
-
- // Bootpath
- runConfig.setBootClassPath(getBootpath(configuration));
-
- // check for cancellation
- if (pm.isCanceled())
- return;
- pm.worked(100);
-
- // set the default source locator if required
- setDefaultSourceLocator(launch, configuration);
-
- // Launch the configuration - 1 unit of work
- runner.run(runConfig, launch, new SubProgressMonitor(pm, 100));
-
- // check for cancellation
- if (pm.isCanceled())
- return;
-
- IProcess[] processes = launch.getProcesses();
- IProcess process = processes[0]; // There is only one.
- // Check if it is already terminated. If it is, then there was a bad error, so just
- // print out the results from it.
- if (process.isTerminated()) {
- IStreamsProxy stProxy = process.getStreamsProxy();
- // Using a printWriter for println capability, but it needs to be on another
- // writer, which will be string
- java.io.StringWriter s = new java.io.StringWriter();
- java.io.PrintWriter w = new java.io.PrintWriter(s);
-
- w.println(ProxyRemoteMessages.VM_TERMINATED_INFO_);
- w.println(ProxyRemoteMessages.VM_COMMAND_LINE);
- w.println(process.getAttribute(IProcess.ATTR_CMDLINE));
- w.println(ProxyRemoteMessages.VM_TERMINATED_LINE1);
- w.println(stProxy.getErrorStreamMonitor().getContents());
- w.println(ProxyRemoteMessages.VM_TERMINATED_LINE2);
- w.println(stProxy.getOutputStreamMonitor().getContents());
- w.println(ProxyRemoteMessages.VM_TERMINATED_LINE3);
- w.close();
-
- String msg = MessageFormat.format(ProxyRemoteMessages.Proxy_Terminated_too_soon_ERROR_, new Object[] { name });
- dh.displayErrorMessage(ProxyRemoteMessages.Proxy_Error_Title, msg);
- throw new CoreException(
- new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, s.toString(), null));
- } else {
- final String traceName = name;
- IStreamsProxy fStreamsProxy = process.getStreamsProxy();
-
- /**
- * StreamListener. Should not be created if ProxyPlugin logger is not logging the requested level.
- *
- * @since 1.1.0
- */
- class StreamListener implements IStreamListener {
- String tracePrefix;
- Level level;
- Job printJob; // Job to try to gather printing together.
- Logger logger;
- StringBuffer gatheredText = new StringBuffer(100);
- {
- logger = ProxyPlugin.getPlugin().getLogger();
- printJob = new Job("") { //$NON-NLS-1$
-
- protected IStatus run(IProgressMonitor monitor) {
- monitor.beginTask(ProxyRemoteMessages.LocalProxyLaunchDelegate_Monitor_PrintRemoteTrace_Text, 1);
- while(true) {
- String output = null;
- synchronized (gatheredText) {
- if (gatheredText.length() <= tracePrefix.length())
- break; // We've reached the end, no more to print.
- output = gatheredText.toString();
- gatheredText.setLength(tracePrefix.length()); // Reset the length to the prefix.
- }
- logger.log(output, level);
- }
- monitor.done();
- return Status.OK_STATUS;
- }
- };
- printJob.setPriority(Job.SHORT);
- printJob.setSystem(true);
- }
-
- public StreamListener(String type, Level level, Logger logger) {
- tracePrefix = traceName + ':' + type + '>' + System.getProperty("line.separator"); //$NON-NLS-1$
- gatheredText.append(tracePrefix);
- this.level = level;
- this.logger = logger;
- }
-
- public void streamAppended(String newText, IStreamMonitor monitor) {
- synchronized(gatheredText) {
- gatheredText.append(newText);
- }
- printJob.schedule(100L); // Wait tenth of second to gather as much as can together.
- }
- };
-
- Logger logger = ProxyPlugin.getPlugin().getLogger();
- if (logger.isLoggingLevel(Level.WARNING)) {
- // Always listen to System.err output if we are at least logging warnings.
- IStreamMonitor monitor = fStreamsProxy.getErrorStreamMonitor();
- if (monitor != null)
- monitor.addListener(new StreamListener("err", Level.WARNING, logger)); //$NON-NLS-1$
- }
-
- // If debug trace is requested, then attach trace listener for System.out
- // Expression tracing requires debug trace too because it prints to sysout. However, it requesting expressionTracing, change logging level to INFO,
- // we want them to show if this true. It is confusing to also have to change logging level in .options file.
- if (useExpressionTracing)
- if (!logger.isLoggingLevel(Level.INFO))
- logger.setLevel(Level.INFO);
- if (useExpressionTracing || "true".equalsIgnoreCase(Platform.getDebugOption(ProxyPlugin.getPlugin().getBundle().getSymbolicName() + ProxyRemoteUtil.DEBUG_VM_TRACEOUT))) { //$NON-NLS-1$
- // Want to trace the output of the remote vm's. And we are logging at least level info.
- if (logger.isLoggingLevel(Level.INFO)) {
- IStreamMonitor monitor = fStreamsProxy.getOutputStreamMonitor();
- if (monitor != null)
- monitor.addListener(new StreamListener("out", Level.INFO, logger)); //$NON-NLS-1$
- }
- }
- }
-
- // If in debug mode, tester must start debugger before going on.
- if (debugMode) {
- if (!dh.promptPort(dport)) {
- process.terminate();
- throw new CoreException(
- new Status(
- IStatus.WARNING,
- ProxyPlugin.getPlugin().getBundle().getSymbolicName(),
- 0,
- "Debugger attach canceled", //$NON-NLS-1$
- null));
- }
- }
-
- // Now set up the registry.
- registry.initializeRegistry(process);
- new REMStandardBeanTypeProxyFactory(registry);
- new REMStandardBeanProxyFactory(registry);
- new REMMethodProxyFactory(registry);
-
- if (debugMode || REMProxyFactoryRegistry.fGlobalNoTimeouts)
- registry.fNoTimeouts = true;
- if (configuration.getAttribute(IProxyConstants.ATTRIBUTE_AWT_SWING, true))
- REMRegisterAWT.registerAWT(registry);
-
- launchInfo.resultRegistry = registry;
-
- pm.done();
- TimerTests.basicTest.stopStep(stepId);
- }
-
- /**
- * @param controller
- * @param info
- * @throws CoreException
- *
- * @since 1.0.2
- */
- private void addInFragmentLibraries(IConfigurationContributionController controller, IConfigurationContributionInfo info) throws CoreException {
- IPDEContributeClasspath instance = IPDEContributeClasspath.INSTANCE;
- if (instance != null) {
- instance.getPDEContributions(controller, info);
- }
- }
-
- // Utilities to find the free port
- private static final Random fgRandom = new Random(System.currentTimeMillis());
-
- private static int findUnusedLocalPort(String host, int searchFrom, int searchTo, int[] exclude) {
- for (int i = 0; i < 10; i++) {
- int port = 0;
- newport : while (true) {
- port = getRandomPort(searchFrom, searchTo);
- if (exclude != null)
- for (int e = 0; e < exclude.length; e++)
- if (port == exclude[e])
- continue newport;
- break;
- }
- try {
- new Socket(host, port);
- } catch (ConnectException e) {
- return port;
- } catch (IOException e) {
- }
- }
- return -1;
- }
-
- private static int getRandomPort(int low, int high) {
- return (int) (fgRandom.nextFloat() * (high - low)) + low;
- }
-
- private String[][] getBootpathExt(Map vmMap) {
- String[][] ext = new String[3][];
- if (vmMap != null) {
- ext[0] = (String[]) vmMap.get(IJavaLaunchConfigurationConstants.ATTR_BOOTPATH_PREPEND);
- ext[1] = (String[]) vmMap.get(IJavaLaunchConfigurationConstants.ATTR_BOOTPATH);
- ext[2] = (String[]) vmMap.get(IJavaLaunchConfigurationConstants.ATTR_BOOTPATH_APPEND);
- }
- return ext;
- }
-
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/MessageDialog.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/MessageDialog.java
deleted file mode 100644
index dd60e3dd1..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/MessageDialog.java
+++ /dev/null
@@ -1,331 +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.remote;
-/*
-
-
- */
-
-import java.awt.*;
-/**
- * This is an AWT message dialog. It will only be used
- * if not running in the workbench by the debug mode helper.
- * It won't be loaded unless AWT is available, so it can be
- * distributed without causing problems on systems that
- * don't have AWT because it won't be loaded in that case.
- */
-class MessageDialog extends Dialog {
- /**
- * Comment for <code>serialVersionUID</code>
- *
- * @since 1.1.0
- */
- private static final long serialVersionUID = 2547670349372067345L;
- private java.awt.Panel ivjContentsPane = null;
- IvjEventHandler ivjEventHandler = new IvjEventHandler();
- private java.awt.TextArea ivjTextArea1 = null;
- private java.awt.Button ivjButton1 = null;
- public int result = 2; // Nothing hit is the same as button 2.
- private java.awt.Button ivjButton2 = null;
-
-class IvjEventHandler implements java.awt.event.ActionListener, java.awt.event.WindowListener {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- if (e.getSource() == MessageDialog.this.getButton1())
- connEtoC2(e);
- if (e.getSource() == MessageDialog.this.getButton2())
- connEtoC3(e);
- };
- public void windowActivated(java.awt.event.WindowEvent e) {};
- public void windowClosed(java.awt.event.WindowEvent e) {};
- public void windowClosing(java.awt.event.WindowEvent e) {
- if (e.getSource() == MessageDialog.this)
- connEtoC1(e);
- };
- public void windowDeactivated(java.awt.event.WindowEvent e) {};
- public void windowDeiconified(java.awt.event.WindowEvent e) {};
- public void windowIconified(java.awt.event.WindowEvent e) {};
- public void windowOpened(java.awt.event.WindowEvent e) {};
- };
-/**
- * MessageDialog constructor comment.
- * @param owner java.awt.Frame
- * @param title java.lang.String
- * @param modal boolean
- */
-public MessageDialog(Frame owner, String title, boolean modal, String msg, String button1, String button2) {
- super(owner, title, modal);
-
- initialize();
- getTextArea1().setText(msg);
- getButton1().setLabel(button1);
- if (button2 != null)
- getButton2().setLabel(button2);
- else {
- // We only want one button, so remove button2
- getContentsPane().remove(getButton2());
- }
-
-}
-/**
- * Comment
- */
-public void button1_ActionPerformed() {
- result = 1;
- setVisible(false);
- return;
-}
-/**
- * Comment
- */
-public void button2_ActionPerformed() {
- result = 2;
- setVisible(false);
- return;
-}
-/**
- * connEtoC1: (MessageDialog.window.windowClosing(java.awt.event.WindowEvent) --> MessageDialog.dispose()V)
- * @param arg1 java.awt.event.WindowEvent
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private void connEtoC1(java.awt.event.WindowEvent arg1) {
- try {
- // user code begin {1}
- // user code end
- this.dispose();
- // user code begin {2}
- // user code end
- } catch (java.lang.Throwable ivjExc) {
- // user code begin {3}
- // user code end
- handleException(ivjExc);
- }
-}
-/**
- * connEtoC2: (Button1.action.actionPerformed(java.awt.event.ActionEvent) --> MessageDialog.button1_ActionPerformed()V)
- * @param arg1 java.awt.event.ActionEvent
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private void connEtoC2(java.awt.event.ActionEvent arg1) {
- try {
- // user code begin {1}
- // user code end
- this.button1_ActionPerformed();
- // user code begin {2}
- // user code end
- } catch (java.lang.Throwable ivjExc) {
- // user code begin {3}
- // user code end
- handleException(ivjExc);
- }
-}
-/**
- * connEtoC3: (Button2.action.actionPerformed(java.awt.event.ActionEvent) --> MessageDialog.button2_ActionPerformed()V)
- * @param arg1 java.awt.event.ActionEvent
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private void connEtoC3(java.awt.event.ActionEvent arg1) {
- try {
- // user code begin {1}
- // user code end
- this.button2_ActionPerformed();
- // user code begin {2}
- // user code end
- } catch (java.lang.Throwable ivjExc) {
- // user code begin {3}
- // user code end
- handleException(ivjExc);
- }
-}
-/**
- * Display dialog.
- * @param args java.lang.String[]
- */
-public static int doit(String title, String message, String button1, String button2) {
- try {
- Frame f = new java.awt.Frame(title);
- f.setVisible(true);
- // Need to massage the method since AWT doesn't have wordwrap. This is for left to right only.
- String msg = message;
- if (message.length() > 95) {
- msg = ""; //$NON-NLS-1$
-nextSeg: while (message.length() > 95) {
- // Too wide, wrapping should be done. This is just a rough guess.
- for (int i=95; 0<=i; i--) {
- if (message.charAt(i) == ' ') {
- // Break here.
- msg = msg + message.substring(0, i) + '\n';
- if (i+1 < message.length())
- message = message.substring(i+1);
- else
- message = ""; //$NON-NLS-1$
- continue nextSeg;
- }
- }
- // If we got here, then there weren't any spaces in the first 80, so look right for first space.
- for (int i=96; i<message.length(); i++) {
- if (message.charAt(i) == ' ') {
- // Break here
- msg = msg + message.substring(0, i) + '\n';
- if (i+1 < message.length())
- message = message.substring(i+1);
- else
- message = ""; //$NON-NLS-1$
- continue nextSeg;
- }
- }
- }
- msg += message; // Now put on whatever is left.
- }
- MessageDialog aMessageDialog = new MessageDialog(f,title,true, msg, button1, button2);
- aMessageDialog.pack();
- aMessageDialog.getToolkit().beep();
- aMessageDialog.setVisible(true);
- f.dispose();
- aMessageDialog.dispose();
-
- return aMessageDialog.result;
- } catch (Exception exception) {
- }
-
- return 2;
-}
-/**
- * Return the Button1 property value.
- * @return java.awt.Button
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private java.awt.Button getButton1() {
- if (ivjButton1 == null) {
- try {
- ivjButton1 = new java.awt.Button();
- ivjButton1.setName("Button1"); //$NON-NLS-1$
- ivjButton1.setLabel("Button1"); //$NON-NLS-1$
- // user code begin {1}
- // user code end
- } catch (java.lang.Throwable ivjExc) {
- // user code begin {2}
- // user code end
- handleException(ivjExc);
- }
- }
- return ivjButton1;
-}
-/**
- * Return the Button2 property value.
- * @return java.awt.Button
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private java.awt.Button getButton2() {
- if (ivjButton2 == null) {
- try {
- ivjButton2 = new java.awt.Button();
- ivjButton2.setName("Button2"); //$NON-NLS-1$
- ivjButton2.setLabel("Button2"); //$NON-NLS-1$
- // user code begin {1}
- // user code end
- } catch (java.lang.Throwable ivjExc) {
- // user code begin {2}
- // user code end
- handleException(ivjExc);
- }
- }
- return ivjButton2;
-}
-/**
- * Return the ContentsPane property value.
- * @return java.awt.Panel
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private java.awt.Panel getContentsPane() {
- if (ivjContentsPane == null) {
- try {
- ivjContentsPane = new java.awt.Panel();
- ivjContentsPane.setName("ContentsPane"); //$NON-NLS-1$
- ivjContentsPane.setLayout(new java.awt.FlowLayout());
- getContentsPane().add(getTextArea1(), getTextArea1().getName());
- getContentsPane().add(getButton1(), getButton1().getName());
- getContentsPane().add(getButton2(), getButton2().getName());
- // user code begin {1}
- // user code end
- } catch (java.lang.Throwable ivjExc) {
- // user code begin {2}
- // user code end
- handleException(ivjExc);
- }
- }
- return ivjContentsPane;
-}
-/**
- * Return the TextArea1 property value.
- * @return java.awt.TextArea
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private java.awt.TextArea getTextArea1() {
- if (ivjTextArea1 == null) {
- try {
- ivjTextArea1 = new TextArea();
- ivjTextArea1.setName("TextArea1"); //$NON-NLS-1$
- ivjTextArea1.setText("TextArea1"); //$NON-NLS-1$
- ivjTextArea1.setRows(20);
- ivjTextArea1.setColumns(100);
- ivjTextArea1.setEditable(false);
- // user code begin {1}
- // user code end
- } catch (java.lang.Throwable ivjExc) {
- // user code begin {2}
- // user code end
- handleException(ivjExc);
- }
- }
- return ivjTextArea1;
-}
-/**
- * Called whenever the part throws an exception.
- * @param exception java.lang.Throwable
- */
-private void handleException(java.lang.Throwable exception) {
-
- /* Uncomment the following lines to print uncaught exceptions to stdout */
- // ProxyPlugin.getPlugin().getMsgLogger().write(Level.WARNING,"--------- UNCAUGHT EXCEPTION ---------");
- // ProxyPlugin.getPlugin().getMsgLogger().write(Level.WARNING,exception);
-}
-/**
- * Initializes connections
- * @exception java.lang.Exception The exception description.
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private void initConnections() throws java.lang.Exception {
- // user code begin {1}
- // user code end
- this.addWindowListener(ivjEventHandler);
- getButton1().addActionListener(ivjEventHandler);
- getButton2().addActionListener(ivjEventHandler);
-}
-/**
- * Initialize the class.
- */
-/* WARNING: THIS METHOD WILL BE REGENERATED. */
-private void initialize() {
- try {
- // user code begin {1}
- // user code end
- setName("MessageDialog"); //$NON-NLS-1$
- setLayout(new java.awt.BorderLayout());
- setSize(426, 240);
- add(getContentsPane(), "Center"); //$NON-NLS-1$
- initConnections();
- } catch (java.lang.Throwable ivjExc) {
- handleException(ivjExc);
- }
- // user code begin {2}
- // user code end
-}
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteMessages.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteMessages.java
deleted file mode 100644
index 68ddb07ef..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteMessages.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 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.remote;
-
-import org.eclipse.osgi.util.NLS;
-
-public final class ProxyRemoteMessages extends NLS {
-
- private static final String BUNDLE_NAME = "org.eclipse.jem.internal.proxy.remote.messages";//$NON-NLS-1$
-
- private ProxyRemoteMessages() {
- // Do not instantiate
- }
-
- public static String NO_OUTPUT_FOLDER_EXC_;
- public static String VM_COMMAND_LINE;
- public static String VM_TERMINATED_INFO_;
- public static String VM_TERMINATED_LINE1;
- public static String VM_TERMINATED_LINE2;
- public static String VM_TERMINATED_LINE3;
- public static String REMOTE_VM_TRACE_INFO_;
- public static String REMOTE_VM_LOCAL_TRACE_INFO_;
- public static String Classcast_EXC_;
- public static String Instantiate_EXC_;
- public static String RemoteCmd_EXC_;
- public static String ExceptionErrorMsg_EXC_;
- public static String OK_7;
- public static String Proxy_NoRunner_ERROR_;
- public static String Proxy_Error_Title;
- public static String Proxy_Terminated_too_soon_ERROR_;
- public static String ProxyRemoteVMName;
- public static String ProxyRemoteVMNameWithComment;
- public static String ProxyRemoteNoLaunchKey;
- public static String ProxyRemoteLaunchVM;
- public static String CleanupJob_title;
- public static String REMProxyFactoryRegistry_CallbackConnectionNotWorking_EXC_;
- public static String REMProxyFactoryRegistry_ConnectionCreationFailed_INFO_;
- public static String REMProxyFactoryRegistry_Job_TerminateProcess_Title;
- public static String REMProxyFactoryRegistry_CouldNotCreateSocketConnectionToRemoteVM_EXC_;
- public static String REMExpression_IOExceptionSeeLog_INFO_;
- public static String REMExpression_CommandExceptionSeeLog_INFO_;
- public static String LocalProxyLaunchDelegate_Monitor_PrintRemoteTrace_Text;
-
- static {
- NLS.initializeMessages(BUNDLE_NAME, ProxyRemoteMessages.class);
- }
-} \ No newline at end of file
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteUtil.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteUtil.java
deleted file mode 100644
index 73eed8a0e..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/ProxyRemoteUtil.java
+++ /dev/null
@@ -1,61 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.core.runtime.IPath;
-import org.osgi.framework.Bundle;
-
-import org.eclipse.jem.internal.proxy.core.IConfigurationContributionController;
-import org.eclipse.jem.internal.proxy.core.ProxyPlugin;
-
-
-public class ProxyRemoteUtil {
-
- // Debug options
- public static final String DEBUG_VM = "/remote/debug/debugvm", // Bring up debugger on remote vm's. //$NON-NLS-1$
- IO_CONSOLE = "/remote/debug/ioconsole", // IO Through console (system in and out) for asking questions. //$NON-NLS-1$
- DEBUG_VM_TRACEOUT = "/remote/debug/vmtraceout", // Trace the output from the remote vm's. //$NON-NLS-1$
- NO_TIMEOUTS = "/remote/debug/notimeouts"; // No socket timeouts when talking to remote vm. Turn this on when doing callback testing. Not needed otherwise. //$NON-NLS-1$
-
- private static REMRegistryController pluginRegistryController;
-
- /**
- * Return the registry controller.
- */
- public synchronized static REMRegistryController getRegistryController() {
- return pluginRegistryController != null ? pluginRegistryController : (pluginRegistryController = new REMRegistryController());
- }
-
- /**
- * Method to update any class paths with any
- * paths that need to be added to a VM. In this case, it is
- * the remotevm.jar and the remotecommon.jar that need to be added. The first jar contains
- * the code necessary to run the remote vm and listen for commands. The second jar contains
- * the common code that is required to be shared on both the IDE side and remote side. It
- * is the interface code so that they both talk the same language.
- * support.
- */
- public static void updateClassPaths(IConfigurationContributionController controller) {
- Bundle proxyBundle = ProxyPlugin.getPlugin().getBundle();
- // Need to have our jars at the beginning. (Struts causes a problem because
- // they have a jar (commons-fileupload.jar) that if when searching for a class and
- // this jar is reached, it causes the class loader to barf. Our jars used to be at
- // the end, and so it found the fileupload jar first and no remote vm could be started
- // because of this.
- controller.contributeClasspath(proxyBundle, (IPath) null, IConfigurationContributionController.PREPEND_USER_CLASSPATH, false); //$NON-NLS-1$
- controller.contributeClasspath(proxyBundle, "vm/remotevm.jar", IConfigurationContributionController.PREPEND_USER_CLASSPATH, false); //$NON-NLS-1$
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanProxy.java
deleted file mode 100644
index 9ada5230b..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanProxy.java
+++ /dev/null
@@ -1,134 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.*;
-/**
- * An abstract base class of IREMBeanProxy that doesn't
- * have the bean type stored in it. The subclasses will
- * supply it. It does however have an ID because it does
- * exist over on the remote VM.
- */
-public abstract class REMAbstractBeanProxy implements IREMBeanProxy {
- protected final REMProxyFactoryRegistry fFactory;
- private Integer fID;
-
- /**
- * Set the bean we are proxying. We are a proxy for a bean running on the remote VM.
- */
- protected REMAbstractBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anID){
- fFactory = aRegistry;
- fID = anID;
- }
-
- /**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
- public boolean equals(Object anObject) {
- if (super.equals(anObject))
- return true; // Identity
- if (anObject instanceof IBeanProxy && !(anObject instanceof IREMConstantBeanProxy) && fFactory.isValid() && ((IBeanProxy) anObject).getProxyFactoryRegistry() == fFactory)
- try {
- // The other is a bean proxy and is not a constant one, let the server do the check.
- return ((IBooleanBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getObjectEquals().invoke(this, (IBeanProxy) anObject)).booleanValue();
- } catch (ThrowableProxy e) {
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
- public boolean sameAs(IBeanProxy aBeanProxy) {
- return this == aBeanProxy; // We can be assured in Remote Proxy that identity of proxy and identity of object are the same.
- }
-
- public ProxyFactoryRegistry getProxyFactoryRegistry() {
- return fFactory;
- }
-
- /**
- * Get ID. An internal method to be used only within the ProxyFactory family.
- */
- public Integer getID() {
- return fID;
- }
-
- /**
- * isValid.
- */
- public boolean isValid() {
- return fID != null;
- }
-
- /**
- * Proxy is about to be released, MUST mark it invalid.
- * This is required. Resources can also be cleaned up
- * if they are being held and need to be cleaned up.
- *
- * NOTE: This method will only be called when the proxy
- * is explicitly released. If it is simply garbage collected,
- * then this method will not be called. Simple garbage collection
- * means that no one is referencing this proxy. The proxy factory
- * will know what id this proxy was referencing and will release it
- * on the server at GC time.
- *
- * If there are resources
- * that absolutely must be released, then the finalize method
- * should be implemented to do the clean up. However, try not
- * to have this be the case. Finalize methods add overhead that is
- * usually better not to have. The better way is for any users
- * that get this kind of proxy object know to call release on
- * ProxyFactoryRegistry to release it before garbage collection.
- */
- public void release() {
- fID = null;
- }
-
- /**
- * Return the toString of the actual bean on the remote side.
- */
- public String toBeanString() {
- IStringBeanProxy string = (IStringBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getObjectToString().invokeCatchThrowableExceptions(this);
- return (string != null) ? string.stringValue() : null;
- }
-
- /**
- * Render the bean proxy into the value field.
- */
- public void renderBean(Commands.ValueObject value) {
- value.setObjectID(isValid() ? getID().intValue() : Commands.VOID); // No longer exists, so send over null.
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isBeanProxy()
- */
- public final boolean isBeanProxy() {
- return true;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isExpressionProxy()
- */
- public final boolean isExpressionProxy() {
- return false;
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanTypeProxy.java
deleted file mode 100644
index dd09366b9..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractBeanTypeProxy.java
+++ /dev/null
@@ -1,703 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2006 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.remote;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.AmbiguousMethodException;
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.common.remote.TransmitableArray;
-
-/**
- * This implementation of IBeanTypeProxy is for where the Bean is on a different VM then the IDE
- *
- * Creation date: (12/3/99 12:29:26 PM)
- *
- * @author: Joe Winchester
- */
-public abstract class REMAbstractBeanTypeProxy implements IREMBeanTypeProxy {
-
- private Integer fID;
-
- protected final REMProxyFactoryRegistry fRegistry;
-
- protected final String fClassname; // This is cached here so that we don't need to go over the line to get it.
-
- private IBeanTypeProxy fSuperType; // This is cached so as not to have to go over the line for it.
-
- /**
- * Create with a registry and a class. It is protected so that only subclasses and the factory with this REM package can call it.
- */
- protected REMAbstractBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType) {
- fRegistry = aRegistry;
- fID = anID;
- fClassname = aClassname;
- fSuperType = aSuperType;
- }
-
- /**
- * equals: Equal if: 1) This proxy == (identity) to the other object This is all that is needed for BeanTypes because we know these are classes,
- * there is only one per class, and Class equals is true only for identity.
- */
- public boolean equals(Object anObject) {
- return super.equals(anObject);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
- public boolean sameAs(IBeanProxy aBeanProxy) {
- return this == aBeanProxy; // We can be assured in Remote Proxy that identity of proxy and identity of object are the same.
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanProxy#getID()
- */
- public Integer getID() {
- return fID;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#isValid()
- */
- public boolean isValid() {
- return fID != null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanProxy#release()
- */
- public void release() {
- // Clear the id and supertype (supertype is cleared so that
- // it won't hold onto it and will let the supertype be GC'd
- // if necessary.
-
- fID = null;
- fSuperType = null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(java.lang.String[])
- */
- public IConstructorProxy getConstructorProxy(String[] argumentClassNames) {
- if (isInterface())
- return null; // Interfaces don't have ctor's.
-
- // Turn class names into array of BeanTypes.
- IBeanTypeProxy[] argTypes = null;
- if (argumentClassNames != null) {
- IStandardBeanTypeProxyFactory typeFactory = fRegistry.getBeanTypeProxyFactory();
- argTypes = new IBeanTypeProxy[argumentClassNames.length];
- for (int i = 0; i < argumentClassNames.length; i++) {
- IBeanTypeProxy type = argTypes[i] = typeFactory.getBeanTypeProxy(argumentClassNames[i]);
- if (type == null)
- return null; // Couldn't find the type.
- }
- }
-
- return getConstructorProxy(argTypes);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- if (isInterface())
- return null; // Interfaces don't have ctor's.
-
- IREMMethodProxy getCtorMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassConstructor();
-
- // Create the argument array
- Object[] getParms = (argumentTypes != null) ? new Object[] { new TransmitableArray(Commands.CLASS_CLASS, argumentTypes)} : // Get Ctor has
- // only one parm,
- // the array of
- // parm types.
- null;
-
- try {
- return (IConstructorProxy) getCtorMethod.invokeWithParms(this, getParms);
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IConstructorProxy[] getConstructors() {
-
- if (isInterface())
- return null; // Interfaces don't have ctor's.
-
- IREMMethodProxy getCtorMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassConstructors();
-
- try {
- IArrayBeanProxy ctors = (IArrayBeanProxy) getCtorMethod.invokeWithParms(this, null);
- IBeanProxy[] proxies = ctors.getSnapshot();
- IConstructorProxy[] ctorproxies = new IConstructorProxy[proxies.length];
- System.arraycopy(proxies, 0, ctorproxies, 0, proxies.length);
- return ctorproxies;
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(java.lang.String[])
- */
- public IConstructorProxy getDeclaredConstructorProxy(String[] argumentClassNames) {
- if (isInterface())
- return null; // Interfaces don't have ctor's.
-
- // Turn class names into array of BeanTypes.
- IBeanTypeProxy[] argTypes = null;
- if (argumentClassNames != null) {
- IStandardBeanTypeProxyFactory typeFactory = fRegistry.getBeanTypeProxyFactory();
- argTypes = new IBeanTypeProxy[argumentClassNames.length];
- for (int i = 0; i < argumentClassNames.length; i++) {
- IBeanTypeProxy type = argTypes[i] = typeFactory.getBeanTypeProxy(argumentClassNames[i]);
- if (type == null)
- return null; // Couldn't find the type.
- }
- }
-
- return getDeclaredConstructorProxy(argTypes);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getDeclaredConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- if (isInterface())
- return null; // Interfaces don't have ctor's.
-
- IREMMethodProxy getCtorMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getDeclaredClassConstructor();
-
- // Create the argument array
- Object[] getParms = (argumentTypes != null) ? new Object[] { new TransmitableArray(Commands.CLASS_CLASS, argumentTypes)} : // Get Ctor has
- // only one parm,
- // the array of
- // parm types.
- null;
-
- try {
- return (IConstructorProxy) getCtorMethod.invokeWithParms(this, getParms);
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IConstructorProxy[] getDeclaredConstructors() {
-
- if (isInterface())
- return null; // Interfaces don't have ctor's.
-
- IREMMethodProxy getCtorMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getDeclaredClassConstructors();
-
- try {
- IArrayBeanProxy ctors = (IArrayBeanProxy) getCtorMethod.invokeWithParms(this, null);
- IBeanProxy[] proxies = ctors.getSnapshot();
- IConstructorProxy[] ctorproxies = new IConstructorProxy[proxies.length];
- System.arraycopy(proxies, 0, ctorproxies, 0, proxies.length);
- return ctorproxies;
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IFieldProxy[] getFields() {
-
- IREMMethodProxy getFieldsMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassGetFields();
-
- try {
- IArrayBeanProxy fields = (IArrayBeanProxy) getFieldsMethod.invokeWithParms(this, null);
- IBeanProxy[] proxies = fields.getSnapshot();
- IFieldProxy[] fieldProxies = new IFieldProxy[proxies.length];
- System.arraycopy(proxies, 0, fieldProxies, 0, proxies.length);
- return fieldProxies;
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IFieldProxy[] getDeclaredFields() {
-
- IREMMethodProxy getDeclaredFieldsMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassGetDeclaredFields();
-
- try {
- IArrayBeanProxy fields = (IArrayBeanProxy) getDeclaredFieldsMethod.invokeWithParms(this, null);
- IBeanProxy[] proxies = fields.getSnapshot();
- IFieldProxy[] fieldProxies = new IFieldProxy[proxies.length];
- System.arraycopy(proxies, 0, fieldProxies, 0, proxies.length);
- return fieldProxies;
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getDeclaredFieldProxy(java.lang.String)
- */
- public IFieldProxy getDeclaredFieldProxy(String fieldName) {
- return (IFieldProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassGetDeclaredField().invokeCatchThrowableExceptions(this,
- fRegistry.getBeanProxyFactory().createBeanProxyWith(fieldName));
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getFieldProxy(java.lang.String)
- */
- public IFieldProxy getFieldProxy(String fieldName) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getFieldProxy(this,fieldName);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getFieldProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String)
- */
- public IProxyField getFieldProxy(IExpression expression, String fieldName) {
- REMProxyFactoryRegistry registry = (REMProxyFactoryRegistry) expression.getRegistry();
- return ((REMMethodProxyFactory) registry.getMethodProxyFactory()).getFieldProxy(expression, this, fieldName);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IMethodProxy[] getMethods() {
-
- IREMMethodProxy getMethodsMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassMethods();
-
- try {
- IArrayBeanProxy methods = (IArrayBeanProxy) getMethodsMethod.invokeWithParms(this, null);
- IBeanProxy[] proxies = methods.getSnapshot();
- IMethodProxy[] methodProxies = new IMethodProxy[proxies.length];
- System.arraycopy(proxies, 0, methodProxies, 0, proxies.length);
- return methodProxies;
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IMethodProxy[] getDeclaredMethods() {
-
- IREMMethodProxy getDeclaredMethodsMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassDeclaredMethods();
-
- try {
- IArrayBeanProxy methods = (IArrayBeanProxy) getDeclaredMethodsMethod.invokeWithParms(this, null);
- IBeanProxy[] proxies = methods.getSnapshot();
- IMethodProxy[] methodProxies = new IMethodProxy[proxies.length];
- System.arraycopy(proxies, 0, methodProxies, 0, proxies.length);
- return methodProxies;
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String)
- */
- public IMethodProxy getMethodProxy(String methodName) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getMethodProxy(this,methodName,(String[])null);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, java.lang.String[])
- */
- public IMethodProxy getMethodProxy(String methodName, String[] argumentClassNames) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getMethodProxy(this,methodName,argumentClassNames);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getMethodProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, org.eclipse.jem.internal.proxy.core.IProxyBeanType[])
- */
- public IProxyMethod getMethodProxy(IExpression expression, String methodName, IProxyBeanType[] parameterTypes) {
- REMProxyFactoryRegistry registry = (REMProxyFactoryRegistry) expression.getRegistry();
- return ((REMMethodProxyFactory) registry.getMethodProxyFactory()).getMethodProxy(expression, this, methodName, parameterTypes);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getMethodProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, java.lang.String[])
- */
- public IProxyMethod getMethodProxy(IExpression expression, String methodName, String[] parameterTypes) {
- REMProxyFactoryRegistry registry = (REMProxyFactoryRegistry) expression.getRegistry();
- return ((REMMethodProxyFactory) registry.getMethodProxyFactory()).getMethodProxy(expression, this, methodName, parameterTypes);
- }
-
- public IProxyMethod getMethodProxy(IExpression expression, String methodName) {
- return getMethodProxy(expression, methodName, (IProxyBeanType[]) null);
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, java.lang.String)
- */
- public IMethodProxy getMethodProxy(String methodName, String argumentQualifiedTypeName) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getMethodProxy(this,methodName,new String[] {argumentQualifiedTypeName});
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getMethodProxy(String methodName, IBeanTypeProxy[] argumentTypes) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getMethodProxy(this,methodName,argumentTypes);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(java.lang.String[])
- */
- public IMethodProxy getDeclaredMethodProxy(String methodName, String[] argumentClassNames) {
-
- // Turn class names into array of BeanTypes.
- IBeanTypeProxy[] argTypes = null;
- if (argumentClassNames != null) {
- IStandardBeanTypeProxyFactory typeFactory = fRegistry.getBeanTypeProxyFactory();
- argTypes = new IBeanTypeProxy[argumentClassNames.length];
- for (int i = 0; i < argumentClassNames.length; i++) {
- IBeanTypeProxy type = argTypes[i] = typeFactory.getBeanTypeProxy(argumentClassNames[i]);
- if (type == null)
- return null; // Couldn't find the type.
- }
- }
-
- return getDeclaredMethodProxy(methodName, argTypes);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getDeclaredMethodProxy(String methodName, IBeanTypeProxy[] argumentTypes) {
- IREMMethodProxy getDeclaredMethodMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassDeclaredMethod();
- IBeanProxy nameProxy = fRegistry.getBeanProxyFactory().createBeanProxyWith(methodName);
- // Create the argument array
- Object[] getParms = (argumentTypes != null) ? new Object[] { nameProxy, new TransmitableArray(Commands.CLASS_CLASS, argumentTypes)} : new Object[] {nameProxy, null};
-
- try {
- return (IMethodProxy) getDeclaredMethodMethod.invokeWithParms(this, getParms);
- } catch (ThrowableProxy e) {
- fRegistry.releaseProxy(e);
- return null;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String)
- */
- public IInvokable getInvokable(String methodName) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getInvokable(this,methodName,(String[])null);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String, java.lang.String[])
- */
- public IInvokable getInvokable(String methodName, String[] argumentClassNames) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getInvokable(this,methodName,argumentClassNames);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String, java.lang.String)
- */
- public IInvokable getInvokable(String methodName, String argumentQualifiedTypeName) {
- return getInvokable(methodName, new String[] { argumentQualifiedTypeName});
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IInvokable getInvokable(String methodName, IBeanTypeProxy[] argumentTypes) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).proxyConstants.getInvokable(this,methodName,argumentTypes);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getNullConstructorProxy()
- */
- public IConstructorProxy getNullConstructorProxy() {
- return getConstructorProxy((IBeanTypeProxy[]) null);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#getProxyFactoryRegistry()
- */
- public ProxyFactoryRegistry getProxyFactoryRegistry() {
- return fRegistry;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getSuperBeanTypeProxy()
- */
- public IBeanTypeProxy getSuperBeanTypeProxy() {
- return fSuperType;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getTypeName()
- */
- public String getTypeName() {
- return fClassname;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isArray()
- */
- public boolean isArray() {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isInterface()
- */
- public boolean isInterface() {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isPrimitive()
- */
- public boolean isPrimitive() {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isKindOf(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy)
- */
- public boolean isKindOf(IBeanTypeProxy aBeanProxyType) {
- return ((IBooleanBeanProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getClassIsAssignableFrom().invokeCatchThrowableExceptions(
- aBeanProxyType, this)).booleanValue();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#newInstance(java.lang.String)
- */
- public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- try {
- return ((REMStandardBeanProxyFactory) fRegistry.getBeanProxyFactory()).createBeanProxy(this, initializationString);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- return null;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
- public String toString() {
- return super.toString() + "(" + getTypeName() + ")"; //$NON-NLS-2$//$NON-NLS-1$
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#getTypeProxy()
- */
- public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).classClass;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#toBeanString()
- */
- public String toBeanString() {
- return getTypeName();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#newInstance()
- */
- public IBeanProxy newInstance() throws ThrowableProxy {
- return ((REMStandardBeanProxyFactory) fRegistry.getBeanProxyFactory()).createBeanProxy(this);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanProxy#renderBean(org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void renderBean(Commands.ValueObject value) {
- value.setObjectID(getID().intValue());
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getFormalTypeName()
- */
- public String getFormalTypeName() {
- return getTypeName();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInitializationError()
- */
- public String getInitializationError() {
- return null; // By default none have an initialization error. There is a special instance for init errors.
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleConstructor(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getCompatibleConstructor(IBeanTypeProxy[] argumentTypes) throws NoSuchMethodException, AmbiguousMethodException, IllegalAccessException {
- if (isInterface())
- return null; // Interfaces don't have ctor's.
-
- IREMMethodProxy findCompatibleMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getFindCompatibleConstructorMethod();
-
- // Create the argument array
- Object[] getParms = (argumentTypes != null) ? new Object[] { this, new TransmitableArray(Commands.CLASS_CLASS, argumentTypes)} : new Object[] {this, null};
-
- try {
- return (IConstructorProxy) findCompatibleMethod.invokeWithParms(this, getParms);
- } catch (ThrowableProxy e) {
- try {
- if (e.getTypeProxy().equals(fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy("java.lang.NoSuchMethodException"))) //$NON-NLS-1$
- throw new NoSuchMethodException(e.getProxyLocalizedMessage());
- else if (e.getTypeProxy().equals(fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy("org.eclipse.jem.internal.proxy.common.AmbiguousMethodException"))) //$NON-NLS-1$
- throw new AmbiguousMethodException(e.getProxyLocalizedMessage());
- else if (e.getTypeProxy().equals(fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy("java.lang.IllegalAccessException"))) //$NON-NLS-1$
- throw new IllegalAccessException(e.getProxyLocalizedMessage());
- ProxyPlugin.getPlugin().getLogger().log(e);
- return null;
- } finally {
- fRegistry.releaseProxy(e);
- }
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleMethod(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getCompatibleMethod(String methodName, IBeanTypeProxy[] argumentTypes) throws NoSuchMethodException, AmbiguousMethodException {
-
- IREMMethodProxy findCompatibleMethod = (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getFindCompatibleMethodMethod();
- IBeanProxy methodNameProxy = fRegistry.getBeanProxyFactory().createBeanProxyWith(methodName);
-
- // Create the argument array
- Object[] getParms = (argumentTypes != null) ? new Object[] { this, methodNameProxy, new TransmitableArray(Commands.CLASS_CLASS, argumentTypes)} : new Object[] {this, methodNameProxy, null};
-
- try {
- return (IMethodProxy) findCompatibleMethod.invokeWithParms(this, getParms);
- } catch (ThrowableProxy e) {
- try {
- if (e.getTypeProxy().equals(fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy("java.lang.NoSuchMethodException"))) //$NON-NLS-1$
- throw new NoSuchMethodException(e.getProxyLocalizedMessage());
- else if (e.getTypeProxy().equals(fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy("org.eclipse.jem.internal.proxy.common.AmbiguousMethodException"))) //$NON-NLS-1$
- throw new AmbiguousMethodException(e.getProxyLocalizedMessage());
- ProxyPlugin.getPlugin().getLogger().log(e);
- return null;
- } finally {
- fRegistry.releaseProxy(e);
- }
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isBeanProxy()
- */
- public final boolean isBeanProxy() {
- return true;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isExpressionProxy()
- */
- public final boolean isExpressionProxy() {
- return false;
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractNumberBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractNumberBeanTypeProxy.java
deleted file mode 100644
index 73a318b69..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAbstractNumberBeanTypeProxy.java
+++ /dev/null
@@ -1,72 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-
-/**
- * Abstract class for any of the number bean type subclasses.
- * NOTE: This does not represent the beantype Number. It is a
- * class that provides functions for Number subclass beantypes.
- * The Number beantype itself is simply a REMBeanTypeProxy since
- * Number is abstract and has no necessary extra function.
- * Creation date: (08/31/00 11:49:12 AM)
- * @author: Administrator
- */
-public abstract class REMAbstractNumberBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMConstantBeanTypeProxy {
-
-protected REMAbstractNumberBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType) {
- super(aRegistry, anID, aClassname, aSuperType);
-}
-/**
- * Helper to create a bean proxy
- * protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-protected abstract INumberBeanProxy createNumberBeanProxy(Number aNumber);
-
-/**
- * Create a new bean proxy with the specified id.
- *
- * For all of the Number types, this is an invalid operation. They are created
- * explicitly through the appropriate create method.
- */
-public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the Number types, they are final classes, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Each beantype will return a default value (usually a value of 0).
- */
-public abstract IBeanProxy newInstance() throws ThrowableProxy;
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAccessibleObjectProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAccessibleObjectProxy.java
deleted file mode 100644
index 8c2eb0047..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAccessibleObjectProxy.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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.remote;
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.core.IAccessibleObjectProxy;
-import org.eclipse.jem.internal.proxy.core.ThrowableProxy;
-
-/**
- * AccessibleObject Proxy.
- *
- * @since 1.0.0
- */
-public class REMAccessibleObjectProxy extends REMAbstractBeanProxy implements IAccessibleObjectProxy {
-
- protected REMAccessibleObjectProxy(REMProxyFactoryRegistry aRegistry, Integer anID) {
- super(aRegistry, anID);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IAccessibleObjectProxy#isAccessible()
- */
- public boolean isAccessible() throws ThrowableProxy {
- return ((IBooleanBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getAccessibleIsAccessible().invoke(this)).booleanValue();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IAccessibleObjectProxy#setAccessible(boolean)
- */
- public void setAccessible(boolean flag) throws ThrowableProxy {
- REMStandardBeanProxyConstants.getConstants(fFactory).getAccessibleSetAccessible().invoke(this, fFactory.getBeanProxyFactory().createBeanProxyWith(flag));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#getTypeProxy()
- */
- public IBeanTypeProxy getTypeProxy() {
- return ((REMMethodProxyFactory) fFactory.getMethodProxyFactory()).accessibleType;
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAnAbstractBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAnAbstractBeanTypeProxy.java
deleted file mode 100644
index ce7fae116..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMAnAbstractBeanTypeProxy.java
+++ /dev/null
@@ -1,75 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-
-/**
- * This is a proxy for an abstract bean type. I.e. you can't create a new instance of it.
- * It can be used as a general abstract type. It will pass newBeanTypeForClass unto
- * the main super type passed in.
- */
-
-public class REMAnAbstractBeanTypeProxy extends REMAbstractBeanTypeProxy {
-
- protected IREMSpecialBeanTypeProxy fMainSuperType; // The type that this was created from so that
- // any non-abstract subclasses can create the correct
- // type of beantype proxy.
-
- public REMAnAbstractBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType, IREMSpecialBeanTypeProxy aType) {
- super(aRegistry, anID, aClassname, aSuperType);
- fMainSuperType = aType;
- }
-
- /**
- * Create a new bean proxy with the specified id.
- *
- * For all of the abstract types, this is an invalid operation.
- */
- public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Note: Since new instances of abstract classes can never be done,
- * this function is not supported.
- */
- public IBeanProxy newInstance() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- return fMainSuperType.newBeanTypeForClass(anID, aClassname, anAbstract, this);
- }
-
- /**
- * release - BeanType is about to be released.
- * Clear the fMainSupertype (supertype is cleared so that
- * it won't hold onto it and will let the supertype be GC'd
- * if necessary.
- */
- public void release() {
- fMainSuperType = null;
- super.release();
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanProxy.java
deleted file mode 100644
index 2041d8a16..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanProxy.java
+++ /dev/null
@@ -1,268 +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.remote;
-/*
-
-
- */
-
-import java.lang.reflect.Array;
-import java.util.logging.Level;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.CommandErrorException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * IDE VM version of the Array proxy
- */
-
-public final class REMArrayBeanProxy extends REMBeanProxy implements IArrayBeanProxy {
- private int fLength = -1;
-
- REMArrayBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anID, IBeanTypeProxy aType) {
- super(aRegistry, anID, aType);
- }
-
- public boolean equals(Object anObject) {
- if (!(anObject instanceof IArrayBeanProxy))
- return false;
- if (sameAs((IBeanProxy) anObject))
- return true; // Identity
- if (((IBeanProxy) anObject).getProxyFactoryRegistry() == fFactory)
- try {
- // The other is an array also, let the server do the check. We will use Arrays.equals.
- return ((IBooleanBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperEquals().invoke(null, new IBeanProxy[] {this, (IBeanProxy) anObject})).booleanValue();
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(e, Level.INFO);
- }
- return false;
- }
-
- /**
- * Get the object at the specified index.
- */
- public IBeanProxy get(int index) throws ThrowableProxy {
- // Format of getter parms is: (Object (array), int (index)).
- Object[] parms = new Object[] {this, new Integer(index)};
- // If the component type is primitive, we need to use the correct getter so that a valid value is returned,
- // if we just used the standard get, if the type was "int" the value returned would be an java.lang.Integer.
- IBeanTypeProxy compType = ((IArrayBeanTypeProxy) getTypeProxy()).getComponentType();
- if (!compType.isPrimitive()) {
- // Use standard getter.
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGet()).invokeWithParms(null, parms);
- } else {
- // Use the correct primitive getter.
- int id = ((IREMBeanProxy) compType).getID().intValue();
- switch (id) {
- case Commands.BYTE_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetByte()).invokeWithParms(null, parms);
- case Commands.BOOLEAN_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetBoolean()).invokeWithParms(null, parms);
- case Commands.CHARACTER_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetChar()).invokeWithParms(null, parms);
- case Commands.DOUBLE_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetDouble()).invokeWithParms(null, parms);
- case Commands.FLOAT_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetFloat()).invokeWithParms(null, parms);
- case Commands.INTEGER_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetInt()).invokeWithParms(null, parms);
- case Commands.LONG_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetLong()).invokeWithParms(null, parms);
- case Commands.SHORT_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetShort()).invokeWithParms(null, parms);
- }
- }
-
- return null;
- }
-
- /**
- * Get the object at the specified multi-dimensional index.
- * The array must be at least the number of dimensions specified,
- * and each index along the way must exist.
- * The number of dimensions can't be greater than the number
- * of dimensions of the real object.
- */
- public IBeanProxy get(int [] indexes) throws ThrowableProxy {
- // Format of getter parms is: (Object (array), int[] (indexes)).
- Object[] parms = new Object[] {this, indexes};
- // If the component type at the specified dimension is primitive, we need to use the correct getter so that a valid value is returned,
- // if we just used the standard get, if the type was "int" the value returned would be an java.lang.Integer.
- int dims = ((IArrayBeanTypeProxy) getTypeProxy()).getDimensions();
- if (dims < indexes.length)
- throw new IllegalArgumentException(); // Too many dimensions
- IBeanTypeProxy finalCompType = ((IArrayBeanTypeProxy) getTypeProxy()).getFinalComponentType();
- if (dims == indexes.length && finalCompType.isPrimitive()) {
- // Use the correct primitive getter because we are accessing the final component and it is primitive.
- int id = ((IREMBeanProxy) finalCompType).getID().intValue();
- switch (id) {
- case Commands.BYTE_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetByte()).invokeWithParms(null, parms);
- case Commands.BOOLEAN_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetBoolean()).invokeWithParms(null, parms);
- case Commands.CHARACTER_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetChar()).invokeWithParms(null, parms);
- case Commands.DOUBLE_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetDouble()).invokeWithParms(null, parms);
- case Commands.FLOAT_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetFloat()).invokeWithParms(null, parms);
- case Commands.INTEGER_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetInt()).invokeWithParms(null, parms);
- case Commands.LONG_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetLong()).invokeWithParms(null, parms);
- case Commands.SHORT_TYPE:
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGetShort()).invokeWithParms(null, parms);
- }
- } else {
- // It is not the final component, or it is not primitive, use the standard accessor.
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperGet()).invokeWithParms(null, parms);
- }
-
- return null;
- }
-
- /**
- * Set the object at the specified index.
- */
- public void set(IBeanProxy value, int index) throws ThrowableProxy {
- // Format of setter parms is: (Object (array), int (index), Object (value)).
- Object[] parms = new Object[] {this, new Integer(index), value};
- ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArraySet()).invokeWithParms(null, parms);
- }
-
- /**
- * Set the object at the specified multi-dimensional index.
- * The array must be at least the number of dimensions specified,
- * and each index along the way must exist.
- * The number of dimensions can't be greater than the number
- * of dimensions of the real object.
- */
- public void set(IBeanProxy value, int [] indexes) throws ThrowableProxy {
- // Format of setter parms is: (Object (array), int[] (indexes), Object (value)).
- Object[] parms = new Object[] {this, indexes, value};
- ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayHelperSet()).invokeWithParms(null, parms);
- }
-
- /**
- * Get the length of the first dimension of this array.
- * If there are multi-dimensions, you must get the appropriate
- * dimension from the get method to see the size of that dimension.
- *
- * e.g.
- * int [3] returns 3
- * int [3][2] returns 3
- *
- * ((IArrayBeanProxy) get(1)).getLength() returns 2
- * Since arrays do not have to be homogenous, there could
- * be a different length array for each of the arrays
- * returned from the first dimension, the returned length
- * from get(2) and get(3) could result in a different value
- * from get(1).
- */
- public int getLength() {
- if (fLength == -1) {
- // It hasn't yet been quiered.
- fLength = ((IIntegerBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getArrayGetLength().invokeCatchThrowableExceptions(null, this)).intValue();
- }
- return fLength;
- }
-
- public IBeanProxy getCatchThrowableException(int index){
- try {
- return get(index);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- fFactory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IArrayBeanProxy#getSnapshot()
- */
- public IBeanProxy[] getSnapshot() throws ThrowableProxy {
- IREMConnection connect = fFactory.getFreeConnection();
- REMStandardBeanProxyFactory proxyFactory = (REMStandardBeanProxyFactory) fFactory.getBeanProxyFactory();
- proxyFactory.startTransaction(); // This is definately a transaction, so start it.
- try {
- Commands.ValueObject returnValue = new Commands.ValueObject();
- try {
- try {
- connect.getArrayContents(getID().intValue(), returnValue);
- return processReturnValue(connect, returnValue);
- } catch (CommandErrorException e) {
- proxyFactory.processErrorReturn(e);
- }
- } catch (CommandException e) {
- if (!e.isRecoverable()) {
- // Close the connection and try again.
- fFactory.closeConnection(connect);
- connect = null;
- connect = fFactory.getFreeConnection();
- try {
- connect.getArrayContents(getID().intValue(), returnValue);
- return processReturnValue(connect, returnValue);
- } catch (CommandException eAgain) {
- // Failed again. Just close and print trace.
- fFactory.closeConnection(connect);
- connect = null;
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", eAgain)); //$NON-NLS-1$
- return null;
- }
- } else {
- // A recoverable error, print trace and return
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- return null;
- }
- }
- } finally {
- proxyFactory.stopTransaction();
- if (connect != null)
- fFactory.returnConnection(connect);
- }
- return null;
- }
-
-
- /*
- * @param returnValue
- * @return
- *
- * @since 1.1.0
- */
- private IBeanProxy[] processReturnValue(IREMConnection connection, ValueObject returnValue) throws CommandException, ThrowableProxy {
- // It is an array containing IDs, as it normally would be.
- // However it will become IBeanProxy[]. That is because if ID's
- // they must be proxies over here.
- BeanProxyValueSender valueSender = new BeanProxyValueSender((REMStandardBeanProxyFactory) fFactory.getBeanProxyFactory(), returnValue);
- connection.readProxyArrayValues(returnValue, valueSender, false);
- Exception e = valueSender.getException();
- if (e != null) {
- if (e instanceof ThrowableProxy)
- throw (ThrowableProxy) e;
- else
- throw (CommandException) e;
- }
- Object vals = valueSender.getArray();
- IBeanProxy[] proxyArray = new IBeanProxy[Array.getLength(vals)];
- System.arraycopy(vals, 0, proxyArray, 0, proxyArray.length);
- return proxyArray;
- }
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanTypeProxy.java
deleted file mode 100644
index ca4f3a95a..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMArrayBeanTypeProxy.java
+++ /dev/null
@@ -1,340 +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.remote;
-/*
-
-
- */
-
-
-
-import org.eclipse.jem.internal.proxy.common.MapTypes;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Array Type Proxy for the IDE VM.
- *
- * The class is final because array's are special and shouldn't have
- * any subclasses since the factory would never call it.
- */
-
-public final class REMArrayBeanTypeProxy extends REMAbstractBeanTypeProxy implements IArrayBeanTypeProxy {
-
- /**
- * Create with a registry and a class. It is package so that only
- * the factory with this IDE package can call it.
- */
- protected REMArrayBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy objectType) {
- super(aRegistry, anID, aClassname, objectType);
- }
- /**
- * This is an array type!
- */
- public boolean isArray() {
- return true;
- }
- /**
- * Return the final component type.
- */
- public IBeanTypeProxy getFinalComponentType() {
- // Component type is strip off all '[' and return class name (if we ever add classLoader support, this won't work).
- // However, if the type is a primitive we need to go through the change table).
- int typeStart = getTypeName().lastIndexOf('[')+1;
- if (getTypeName().charAt(typeStart) == 'L') {
- // It is a class.
- // Strip off up to the 'L', and the trailing ';'. That is the class name.
- return fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy(getTypeName().substring(typeStart+1, getTypeName().length()-1));
- } else {
- // It is a type. Need to map it.
- Class aType = (Class) MapTypes.MAP_SHORTSIG_TO_TYPE.get(getTypeName().substring(typeStart, typeStart+1));
- return aType != null ? fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy(aType.getName()) : null;
- }
- }
-
- /**
- * Return the component type.
- */
- public IBeanTypeProxy getComponentType() {
- // Component type is strip off first '[' and return class name (if we ever add classLoader support, this won't work).
- // However, if the type is a primitive we need to go through the change table).
- if (getTypeName().charAt(1) != '[') {
- // It is a one dimensional array, just send to getFinalComponentType to figure out the type.
- return getFinalComponentType();
- } else {
- // It is a multi-dimensional array. Just strip off one '[' and send that to the bean type factory.
- return fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy(getTypeName().substring(1));
- }
- }
- /**
- * Return the number of dimensions.
- */
- public int getDimensions() {
- return getTypeName().lastIndexOf('[')+1;
- }
-
- /**
- * Create a new bean proxy with the specified object
- * Use the constructor that allows the type proxy to be set as well as the bean
- * because we are the type and by setting it now we might avoid it being lookup for in the
- * factory the first time it is asked for.
- */
- public IREMBeanProxy newBeanProxy(Integer anID) {
- return new REMArrayBeanProxy(fRegistry, anID, this);
- }
-
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * Arrays can't be subclassed.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the null ctor proxy for this method with these arguments.
- * For all of the array types, this is an invalid operation.
- */
- public IConstructorProxy getNullConstructorProxy() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the array types, this is an invalid operation.
- */
- public IConstructorProxy getConstructorProxy(String[] argumentClassNames) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the array types, this is an invalid operation.
- */
- public IConstructorProxy getConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the array types, this is an invalid operation.
- */
- public IConstructorProxy[] getConstructors() {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the array types, this is an invalid operation.
- */
- public IConstructorProxy[] getDeclaredConstructors() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the array types, this is an invalid operation.
- */
- public IConstructorProxy getDeclaredConstructorProxy(String[] argumentClassNames) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the array types, this is an invalid operation.
- */
- public IConstructorProxy getDeclaredConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the field for the target VM being the same as the REM
- * For all of the array types, this is an invalid operation.
- */
- public IFieldProxy getFieldProxy(String fieldName) {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the array types, this is an invalid operation.
- */
- public IFieldProxy[] getFields() {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the array types, this is an invalid operation.
- */
- public IFieldProxy[] getDeclaredFields() {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy[] getMethods() {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy[] getDeclaredMethods() {
- throw new UnsupportedOperationException();
- }
-
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName, IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName, String[] argumentClassNames) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy getDeclaredMethodProxy(String methodName, IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy getDeclaredMethodProxy(String methodName, String[] argumentClassNames) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName, String argumentQualifiedTypeName) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the array types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Create an array bean proxy.
- *
- * - (int, new int[2] {3, 4}) will create:
- * int [3] [4]
- *
- * - (int[], new int[1] {1})
- * int [1]
- *
- * - (int[], new int[2] {2,3})
- * int [2] [3]
- *
- *
- * - (int[], null) or (int[], new int[0]) or (int, null) or (int, new int[0])
- * int [0]
- * (int[][], null) or (int[][], new int[0])
- * int[0][]
- * This is because an array instance with no dimensions specified is not valid.
- *
- * - (int[][], new int[1] {3})
- * int[3][]
- *
- * It is package protected so that only the REM Factory can call it.
- */
- REMArrayBeanProxy createBeanProxyWith(int[] dimensions) throws ThrowableProxy {
- // If the dimensions is null or zero length, then create the
- // array as a 0 sized array one dimensional array.
- if (dimensions == null || dimensions.length == 0)
- return createBeanProxyWith(new int[] {0});
-
- // Remove from this type the number of dimensions specified
- // coming in, up to but no further than the final component.
- // From here we can then use the appropriate java.lang.reflect.Array
- // method to create the array.
- IBeanTypeProxy compType = null; // The type of array to create (it may be different number of dimensions).
- int numDims = getDimensions();
- if (numDims <= dimensions.length)
- compType = getFinalComponentType(); // There are the same or more requested dimensions, so use final component type
- else {
- // There are fewer requested dimensions, so strip off that many
- String compClass = getTypeName().substring(dimensions.length);
- compType = fRegistry.getBeanTypeProxyFactory().getBeanTypeProxy(compClass);
- }
-
- if (dimensions.length == 1) {
- // Use the one dimension call
- Object[] parms = new Object[] {compType, new Integer(dimensions[0])};
- return (REMArrayBeanProxy) ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getArrayNewInstanceOneDimension()).invokeWithParms(null, parms);
- } else {
- // Use the multi dimension call
- Object[] parms = new Object[] {compType, dimensions};
- return (REMArrayBeanProxy) ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fRegistry).getArrayNewInstanceMultiDimension()).invokeWithParms(null, parms);
- }
- }
-
- /**
- * @see IBeanTypeProxy#getFormalTypeName()
- */
- public String getFormalTypeName() {
- String name = getTypeName();
- int dims = name.lastIndexOf('[') + 1;
- String type = getFinalComponentType().getTypeName();
- StringBuffer formalType = new StringBuffer(type.length()+("[]".length()*dims)); //$NON-NLS-1$
- formalType.append(type);
- for (int i=0; i<dims; i++)
- formalType.append("[]"); //$NON-NLS-1$
- return formalType.toString();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleConstructor(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getCompatibleConstructor(IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleMethod(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getCompatibleMethod(String methodName, IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanProxy.java
deleted file mode 100644
index 86e05000e..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanProxy.java
+++ /dev/null
@@ -1,39 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Standard implementation of IREMBeanProxy
- */
-
-public class REMBeanProxy extends REMAbstractBeanProxy {
- private IBeanTypeProxy fType;
-
- protected REMBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anID, IBeanTypeProxy aType){
- super(aRegistry, anID);
- fType = aType;
- }
-
- public IBeanTypeProxy getTypeProxy() {
- return fType;
- }
-
- public void release() {
- fType = null;
- super.release();
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanTypeProxy.java
deleted file mode 100644
index bda0aeff7..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBeanTypeProxy.java
+++ /dev/null
@@ -1,66 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-/**
- * Default implementation for a BeanTypeProxy. This is what is used
- * for regular default beans and beantypes when no special beans or bean types are needed.
- */
-public class REMBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMSpecialBeanTypeProxy {
-
- /**
- * Create with a registry and a class. It is protected so that only subclasses
- * and the factory with this REM package can call it.
- */
- public REMBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType) {
- super(aRegistry, anID, aClassname, aSuperType);
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * NOTE: All subclasses must override this to return the correct type of BeanTypeProxy.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- return newBeanTypeForClass(anID, aClassname, anAbstract, this);
- }
-
- /**
- * The special method to handle subclassing from an abstract).
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract, IBeanTypeProxy superType) {
- if (!anAbstract)
- return new REMBeanTypeProxy(fRegistry, anID, aClassname, superType);
- else
- return new REMAnAbstractBeanTypeProxy(fRegistry, anID, aClassname, superType, this);
- }
-
- /**
- * Create a new bean proxy with the specified id.
- */
- public IREMBeanProxy newBeanProxy(Integer anID){
-
- return new REMBeanProxy(fRegistry, anID, this);
-
- }
-
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanProxy.java
deleted file mode 100644
index de0427251..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanProxy.java
+++ /dev/null
@@ -1,45 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import java.math.BigDecimal;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Proxy for BigDecimals.
- */
-class REMBigDecimalBeanProxy extends REMNumberBeanProxy {
-
-REMBigDecimalBeanProxy(REMProxyFactoryRegistry aRegistry, BigDecimal aBigDecimal) {
- super(aRegistry, aBigDecimal);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).bigDecimalClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(numberValue(), ((IREMBeanTypeProxy) getTypeProxy()).getID().intValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanTypeProxy.java
deleted file mode 100644
index 8d0fce770..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigDecimalBeanTypeProxy.java
+++ /dev/null
@@ -1,73 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import java.math.BigDecimal;
-/**
- * Remote Implementation of IBeanTypeProxy for BigDecimal.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMBigDecimalBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final static BigDecimal zeroValue = new BigDecimal(0D);
-
-REMBigDecimalBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.BIG_DECIMAL_CLASS), BigDecimal.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMBigDecimalBeanProxy(aRegistry, zeroValue);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createBigDecimalBeanProxy(BigDecimal aBigDecimal) {
- return (!zeroValue.equals(aBigDecimal)) ?
- new REMBigDecimalBeanProxy(fRegistry, aBigDecimal) : zeroProxy;
-}
-
-/**
- * Generic way to create an BigDecimal proxy, however, the Number must be a BigDecimal.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createBigDecimalBeanProxy((BigDecimal) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createBigDecimalBeanProxy((BigDecimal) value.anObject);
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanProxy.java
deleted file mode 100644
index cfd4dbf79..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanProxy.java
+++ /dev/null
@@ -1,45 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import java.math.BigInteger;
-/**
- * Remote Proxy for BigIntegers.
- */
-class REMBigIntegerBeanProxy extends REMNumberBeanProxy {
-
-REMBigIntegerBeanProxy(REMProxyFactoryRegistry aRegistry, BigInteger aBigInteger) {
- super(aRegistry, aBigInteger);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).bigIntegerClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(numberValue(), ((IREMBeanTypeProxy) getTypeProxy()).getID().intValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanTypeProxy.java
deleted file mode 100644
index 8661f332f..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBigIntegerBeanTypeProxy.java
+++ /dev/null
@@ -1,75 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import java.math.BigInteger;
-/**
- * Remote Implementation of IBeanTypeProxy for BigInteger.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMBigIntegerBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final static BigInteger zeroValue = new BigInteger("0"); //$NON-NLS-1$
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMBigIntegerBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.BIG_INTEGER_CLASS), BigInteger.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMBigIntegerBeanProxy(aRegistry, zeroValue);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createBigIntegerBeanProxy(BigInteger aBigInteger) {
- return (!zeroValue.equals(aBigInteger)) ?
- new REMBigIntegerBeanProxy(fRegistry, aBigInteger) : zeroProxy;
-}
-
-/**
- * Generic way to create an BigInteger proxy, however, the Number must be a BigInteger.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createBigIntegerBeanProxy((BigInteger) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createBigIntegerBeanProxy((BigInteger) value.anObject);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanProxy.java
deleted file mode 100644
index 77ec3c4dc..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanProxy.java
+++ /dev/null
@@ -1,96 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBooleanBeanProxy for Boolean.class.
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-final class REMBooleanClassBeanProxy extends REMConstantBeanProxy implements IBooleanBeanProxy {
- private final Boolean fBooleanValue;
-
-/**
- * Store the boolean value so that we can return the booleanValue faster
- * without the need for going across the line. It is package protected because it is created in
- * special way, so no one else should create these.
- * @param aBean java.lang.Object
- */
-REMBooleanClassBeanProxy(REMProxyFactoryRegistry aRegistry, Boolean value) {
- super(aRegistry);
- fBooleanValue = value;
-}
-
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMBooleanClassBeanProxy)
- return fBooleanValue.booleanValue() == ((REMBooleanClassBeanProxy) anObject).booleanValue();
- if (anObject instanceof Boolean)
- return fBooleanValue.booleanValue() == ((Boolean) anObject).booleanValue();
- return false;
-}
-
-/**
- * Return the boolean value
- */
-public boolean booleanValue() {
- return fBooleanValue.booleanValue();
-}
-/**
- * Return the java.lang.Boolean value
- */
-public Boolean getBooleanValue() {
- return fBooleanValue;
-}
-
-/**
- * Return the toString of the bean itself.
- */
-public String toBeanString() {
- return fBooleanValue.toString();
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).booleanClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fBooleanValue);
-}
-}
-
-
-
-
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanTypeProxy.java
deleted file mode 100644
index b5960a334..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanClassBeanTypeProxy.java
+++ /dev/null
@@ -1,93 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Boolean BeanType Proxy for Boolean.class.
- * Creation date: (2/23/00 1:59:02 PM)
- * @author: Richard Lee Kulp
- */
-final class REMBooleanClassBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMConstantBeanTypeProxy {
-
- // Cache these instances. Since the BeanType proxies are cached also, only one instance
- // of true/false will be in system.
- protected final IBooleanBeanProxy trueProxy;
- protected final IBooleanBeanProxy falseProxy;
-/**
- * REMBooleanBeanTypeProxy constructor comment.
- */
-protected REMBooleanClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy objectType) {
- super(aRegistry, new Integer(Commands.BOOLEAN_CLASS), Boolean.class.getName(), objectType);
-
- trueProxy = new REMBooleanClassBeanProxy( fRegistry, Boolean.TRUE);
- falseProxy = new REMBooleanClassBeanProxy( fRegistry, Boolean.FALSE);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- * Use the cache.
- */
-IBooleanBeanProxy createBooleanBeanProxy(Boolean aBoolean) {
- return aBoolean.booleanValue() ? trueProxy : falseProxy;
-}
-
-/**
- * Create a new bean proxy with the specified id.
- *
- * For all of the primitive wrapper types, this is an invalid operation. They are created
- * explicitly through the appropriate create method.
- */
-public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the primitive wrapper types, they are final classes, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newInstance method. Boolean doesn't have a default ctor, so the standard way won't work.
- * Return the falseProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return falseProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createBooleanBeanProxy(value.aBool ? Boolean.TRUE : Boolean.FALSE);
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanProxy.java
deleted file mode 100644
index 2dd4c0907..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanProxy.java
+++ /dev/null
@@ -1,104 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote Implementation of IBooleanBeanProxy for Boolean.TYPE.
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-final class REMBooleanTypeBeanProxy extends REMConstantBeanProxy implements IBooleanBeanProxy {
- private final boolean fBoolean;
-
-/**
- * Store the boolean value so that we can return the booleanValue faster
- * without the need for going across the line. It is package protected because it is created in
- * special way, so no one else should create these.
- * @param aBean java.lang.Object
- */
-REMBooleanTypeBeanProxy(REMProxyFactoryRegistry aRegistry, boolean value) {
- super(aRegistry);
- fBoolean = value;
-}
-
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMBooleanTypeBeanProxy)
- return fBoolean == ((REMBooleanTypeBeanProxy) anObject).booleanValue();
- if (anObject instanceof Boolean)
- return fBoolean == ((Boolean) anObject).booleanValue();
- return false;
-}
-
-/* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
-public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMBooleanTypeBeanProxy)
- return fBoolean == ((REMBooleanTypeBeanProxy) aBeanProxy).booleanValue();
- return false;
-}
-
-/**
- * Return the boolean value
- */
-public boolean booleanValue() {
- return fBoolean;
-}
-/**
- * Return the java.lang.Boolean value
- */
-public Boolean getBooleanValue() {
- return fBoolean ? Boolean.TRUE : Boolean.FALSE;
-}
-
-/**
- * Return the toString of the bean itself.
- */
-public String toBeanString() {
- return fBoolean ? Boolean.TRUE.toString() : Boolean.FALSE.toString();
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).booleanType;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fBoolean);
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanTypeProxy.java
deleted file mode 100644
index 58aab1068..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMBooleanTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,69 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Boolean BeanType Proxy for Boolean.TYPE
- * Creation date: (2/23/00 1:59:02 PM)
- * @author: Richard Lee Kulp
- */
-final class REMBooleanTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-
- // Cache these instances. Since the BeanType proxies are cached also, only one instance
- // of true/false will be in system.
- protected final IBooleanBeanProxy trueProxy;
- protected final IBooleanBeanProxy falseProxy;
-/**
- * REMBooleanBeanTypeProxy constructor comment.
- */
-protected REMBooleanTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.BOOLEAN_TYPE), Boolean.TYPE.getName());
-
- trueProxy = new REMBooleanTypeBeanProxy( fRegistry, true);
- falseProxy = new REMBooleanTypeBeanProxy( fRegistry, false);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- * Use the cache.
- */
-IBooleanBeanProxy createBooleanBeanProxy(boolean aBoolean) {
- return aBoolean ? trueProxy : falseProxy;
-}
-
-
-/**
- * newInstance method. boolean is a primitive, so the standard way won't work.
- * Return the falseProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return falseProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createBooleanBeanProxy(value.aBool);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanProxy.java
deleted file mode 100644
index e8a44552d..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanProxy.java
+++ /dev/null
@@ -1,45 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * Remote Proxy for Byte.class.
- */
-class REMByteClassBeanProxy extends REMNumberBeanProxy {
-
-REMByteClassBeanProxy(REMProxyFactoryRegistry aRegistry, Byte aByte) {
- super(aRegistry, aByte);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).byteClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set((Byte) numberValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanTypeProxy.java
deleted file mode 100644
index bfbf1ac44..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteClassBeanTypeProxy.java
+++ /dev/null
@@ -1,85 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * BeanType Proxy for Byte.class.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMByteClassBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final INumberBeanProxy oneProxy;
- private final INumberBeanProxy twoProxy;
- private final INumberBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMByteClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.BYTE_CLASS), Byte.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMByteClassBeanProxy(aRegistry, new Byte((byte)0));
- oneProxy = new REMByteClassBeanProxy(aRegistry, new Byte((byte)1));
- twoProxy = new REMByteClassBeanProxy(aRegistry, new Byte((byte)2));
- threeProxy = new REMByteClassBeanProxy(aRegistry, new Byte((byte)3));
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createByteBeanProxy(Byte aByte) {
- switch(aByte.byteValue()) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- default: return new REMByteClassBeanProxy(fRegistry, aByte);
- }
-}
-
-/**
- * Generic way to create an Integer proxy, however, the Number must be an Integer.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createByteBeanProxy((Byte) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createByteBeanProxy(new Byte(value.aByte));
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanProxy.java
deleted file mode 100644
index b762b9b9b..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanProxy.java
+++ /dev/null
@@ -1,133 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote Implementation of INumberBeanProxy for Byte.TYPE.
- * It can answer all of the primitive number types (int, long, short, byte, double, float).
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-class REMByteTypeBeanProxy extends REMConstantBeanProxy implements INumberBeanProxy {
- private final byte fByte;
-
-/**
- * It is package protected because they are created
- * in a special way and no one else should create them.
- * @param aBean java.lang.Object
- */
-REMByteTypeBeanProxy(REMProxyFactoryRegistry aRegistry, byte aByte) {
- super(aRegistry);
- fByte = aByte;
-}
-
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMByteTypeBeanProxy)
- return fByte == ((REMByteTypeBeanProxy) anObject).byteValue();
- if (anObject instanceof Byte)
- return fByte == ((Byte) anObject).byteValue();
- return false;
-}
-
-/* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
-public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMByteTypeBeanProxy)
- return fByte == ((REMByteTypeBeanProxy) aBeanProxy).byteValue();
- return false;
-}
-
-/**
- * byteValue method comment.
- */
-public byte byteValue() {
- return fByte;
-}
-/**
- * doubleValue method comment.
- */
-public double doubleValue() {
- return fByte;
-}
-/**
- * floatValue method comment.
- */
-public float floatValue() {
- return fByte;
-}
-/**
- * Return the int value
- */
-public int intValue() {
- return fByte;
-}
-/**
- * longValue method comment.
- */
-public long longValue() {
- return fByte;
-}
-/**
- * numberValue method comment.
- */
-public Number numberValue() {
- return new Byte(fByte);
-}
-/**
- * shortValue method comment.
- */
-public short shortValue() {
- return fByte;
-}
-
-/**
- * The bean's toString.
- */
-public String toBeanString() {
- return String.valueOf(fByte);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).byteType;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fByte);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanTypeProxy.java
deleted file mode 100644
index 514192a13..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMByteTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,110 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Byte.TYPE.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMByteTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final INumberBeanProxy oneProxy;
- private final INumberBeanProxy twoProxy;
- private final INumberBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMByteTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.BYTE_TYPE), Byte.TYPE.getName());
-
- // Create the cached values
- zeroProxy = new REMByteTypeBeanProxy(aRegistry, (byte)0);
- oneProxy = new REMByteTypeBeanProxy(aRegistry, (byte)1);
- twoProxy = new REMByteTypeBeanProxy(aRegistry, (byte)2);
- threeProxy = new REMByteTypeBeanProxy(aRegistry, (byte)3);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createByteBeanProxy(byte aByte) {
- switch(aByte) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- default: return new REMByteTypeBeanProxy(fRegistry, aByte);
- }
-}
-
-/**
- * newInstance method. byte is a primitive, so the standard way won't work.
- * Return the zeroProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createByteBeanProxy(value.aByte);
-}
-
-/**
- * Short cut for newInstance where the string follows the
- * specific pattern we expect. That way it won't be necessary to ship over to the vm
- * to process it.
- *
- * The pattern it can accept is:
- * 1) (byte) validNumber - number can be any number because (byte) explicitly casts it down.
- * 2) validNumber
- * It will use the decode function of byte to determine the valid number.
- */
-public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- String trim = initializationString.trim();
- if (trim.length() == 0)
- return super.newInstance(initializationString);
- byte aByte;
- if (trim.startsWith("(byte)")) { //$NON-NLS-1$
- Number v = parseString(trim.substring("(byte)".length()).trim()); //$NON-NLS-1$
- if (v != null)
- aByte = v.byteValue();
- else
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- } else {
- try {
- aByte = Byte.decode(trim).byteValue(); // See if valid byte format.
- } catch (NumberFormatException e) {
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- }
- }
-
- return getProxyFactoryRegistry().getBeanProxyFactory().createBeanProxyWith(aByte);
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackInputStream.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackInputStream.java
deleted file mode 100644
index 9e2075bbb..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackInputStream.java
+++ /dev/null
@@ -1,146 +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.remote;
-/*
-
-
- */
-
-import java.io.*;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jem.internal.proxy.core.ProxyPlugin;
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.common.remote.IOCommandException;
-/**
- * This is the inputstream used to return a lot of data from
- * the server.
- */
-
-public class REMCallbackInputStream extends InputStream {
-
- protected DataInputStream fIn;
- protected DataOutputStream fOut;
- protected byte[] fBuffer;
- protected int fNextByte = 0;
- protected int fLastByte = 0;
-
- public REMCallbackInputStream(DataInputStream in, DataOutputStream out) {
- fIn = in;
- fOut = out;
-
- Integer bufSize = Integer.getInteger("proxyvm.bufsize"); //$NON-NLS-1$
- if (bufSize == null)
- bufSize = new Integer(16000);
- fBuffer = new byte[bufSize.intValue()];
- }
-
- protected void clearStream() {
- fIn = null;
- fOut = null;
- fBuffer = null;
- }
-
- protected void fillBuffer() throws IOException {
- if (fIn == null)
- throw new InterruptedIOException();
- try {
- if (fLastByte != -1) {
- fLastByte = Commands.readBytes(fIn, fBuffer);
- if (fLastByte != -1)
- fNextByte = 0;
- else {
- fNextByte = -1;
- }
- }
- } catch (CommandException e) {
- try {
- close(false);
- } catch (IOException e1) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e1)); // Error during close, just log it. //$NON-NLS-1$
- }
- throw new IOCommandException(e);
- }
- }
-
- public int read() throws IOException {
- if (fNextByte >= fLastByte) {
- fillBuffer();
- }
- if (fLastByte == -1)
- return -1; // We've previously reached the end.
-
- return fBuffer[fNextByte++] & 0xFF; // So that it is in range 0 to 255.
- }
-
- public int read(byte b[], int off, int len) throws IOException {
- if (b == null) {
- throw new NullPointerException();
- } else if ((off < 0) || (off > b.length) || (len < 0) ||
- ((off + len) > b.length) || ((off + len) < 0)) {
- throw new IndexOutOfBoundsException();
- } else if (len == 0) {
- return 0;
- }
-
- int read = 0;
- while (len > 0) {
- if (fNextByte >= fLastByte)
- fillBuffer();
- if (fLastByte == -1)
- return read != 0 ? read : -1; // No more, return amount read, or if none read, then -1
- int move = fLastByte - fNextByte;
- if (move > len)
- move = len;
- System.arraycopy(fBuffer, fNextByte, b, off, move);
- read += move;
- fNextByte += move;
- off += move;
- len -= move;
- }
-
- return read;
- }
-
- public int available() throws IOException {
- return fLastByte != -1 ? fLastByte - fNextByte : 0;
- }
-
- public void close() throws IOException {
- close(true);
- }
-
- protected void close(boolean wait) throws IOException {
- if (fOut == null)
- return; // Already closed.
- try {
- fOut.writeByte(Commands.CALLBACK_STREAM_TERMINATE);
- fOut.flush();
- fOut = null; // So that we know we closed already if error occurs during in read() below.
- if (wait) {
- // Need to read until End of stream because we need to flush out the
- // stream so that next time we use this connection we start fresh.
- // If the server has already finished writing, we will read until then.
- // If the server has not yet finished writing, when it reads the terminate
- // request it will send an end of stream marker for us to read. But either
- // way we can't leave until we've read everything from the stream.
-
- // If called with no wait, then we are closing hard and will be closing the socket too.
- while (read() != -1) {
- }
- }
- } finally {
- clearStream();
- }
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackRegistry.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackRegistry.java
deleted file mode 100644
index 816c40c80..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackRegistry.java
+++ /dev/null
@@ -1,185 +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.remote;
-/*
-
-
- */
-
-import java.net.Socket;
-import java.util.*;
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.core.ExpressionProxy.ProxyEvent;
-
-/**
- * This registry will handle callbacks.
- * It is package protected because no one
- * should access it outside.
- */
-class REMCallbackRegistry implements ICallbackRegistry {
- final REMProxyFactoryRegistry fFactory;
- final String fNamePostfix;
- List fThreads = Collections.synchronizedList(new LinkedList()); // List of active callback threads.
-
- Map fIdToCallback = new HashMap(5); // ID to Callback map.
- Map fCallbackProxyToId = new HashMap(5); // Callback to ID map. This will also hold onto the callback proxies so that they don't get GC'd while the callback is registered.
-
- IREMMethodProxy fInitializeCallback;
- IBeanProxy fRemoteServer;
-
- boolean registryOpen = true;
-
- public REMCallbackRegistry(String name, REMProxyFactoryRegistry aFactory) {
-
- fFactory = aFactory;
- fNamePostfix = name;
-
- // Now register common proxies.
- IREMBeanTypeProxy callbackType = new REMInterfaceBeanTypeProxy(fFactory, new Integer(Commands.ICALLBACK_CLASS), "org.eclipse.jem.internal.proxy.vm.remote.ICallback"); //$NON-NLS-1$
-
- fInitializeCallback = (IREMMethodProxy) ((REMMethodProxyFactory) fFactory.getMethodProxyFactory()).methodType.newBeanProxy(new Integer(Commands.INITIALIZECALLBACK_METHOD_ID));
-
- fRemoteServer = aFactory.getBeanProxyFactory().getIVMServerProxy(); // For us, the IVMServer on the remote vm ALSO implements IVMCallbackServer.
-
- ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).registerBeanTypeProxy(callbackType, true);
- ((REMStandardBeanProxyFactory) fFactory.getBeanProxyFactory()).registerProxy(fInitializeCallback);
-
- }
-
- public boolean createCallback(Socket incoming) {
- if (registryOpen) {
- Thread st = new REMCallbackThread(incoming, this, "Callback Thread-"+fNamePostfix, fFactory, fFactory.fNoTimeouts); //$NON-NLS-1$
- fThreads.add(st);
- st.start();
- return true;
- } else
- return false;
- }
-
- /**
- * Use this to request a shutdown. If the server is already shutdown, this will return false.
- */
- public boolean requestShutdown() {
- if (registryOpen)
- shutdown();
- else
- return false;
- return true;
- }
-
- /**
- * Remove a thread from the list.
- */
- public void removeCallbackThread(REMCallbackThread thread) {
- fThreads.remove(thread);
- }
-
- private void shutdown() {
-
- // Go through each thread and ask it to close. Make a copy of the list so that we
- // won't get into deadlocks.
- REMCallbackThread[] threadsArray = (REMCallbackThread[]) fThreads.toArray(new REMCallbackThread[fThreads.size()]);
- for (int i=0; i<threadsArray.length; i++) {
- // This is a harsh way to shut a connection down, but there's no
- // other way I know of to interrupt the read on a socket.
- threadsArray[i].close();
- }
-
- // Now that they've been told to close, wait on each one to finish.
- for (int i=0; i<threadsArray.length; i++)
- try {
- threadsArray[i].join(10000); // Wait ten seconds, if longer, just go on to next one.
- } catch (InterruptedException e) {
- }
-
- fThreads.clear();
- fIdToCallback.clear();
- fCallbackProxyToId.clear();
- fInitializeCallback = null;
- fRemoteServer = null;
-
- }
-
- public ICallback getRegisteredCallback(int id) {
- synchronized(fIdToCallback) {
- return (ICallback) fIdToCallback.get(new Integer(id));
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.ICallbackRegistry#registerCallback(org.eclipse.jem.internal.proxy.core.IBeanProxy, org.eclipse.jem.internal.proxy.core.ICallback)
- */
- public void registerCallback(IBeanProxy callbackProxy, ICallback cb) {
- synchronized(fIdToCallback) {
- fIdToCallback.put(((IREMBeanProxy) callbackProxy).getID(), cb);
- fCallbackProxyToId.put(callbackProxy, ((IREMBeanProxy) callbackProxy).getID());
- fInitializeCallback.invokeCatchThrowableExceptions(callbackProxy, new IBeanProxy[] {fRemoteServer, fFactory.getBeanProxyFactory().createBeanProxyWith(((IREMBeanProxy) callbackProxy).getID().intValue())});
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.ICallbackRegistry#registerCallback(org.eclipse.jem.internal.proxy.core.IProxy, org.eclipse.jem.internal.proxy.core.ICallback, org.eclipse.jem.internal.proxy.core.IExpression)
- */
- public void registerCallback(IProxy callbackProxy, final ICallback cb, IExpression expression) {
- final Integer id;
- if (callbackProxy.isBeanProxy()) {
- id = ((IREMBeanProxy) callbackProxy).getID();
- synchronized(fIdToCallback) {
- fIdToCallback.put(id, cb);
- fCallbackProxyToId.put(callbackProxy, id);
- }
- } else {
- id = new Integer(callbackProxy.hashCode());
- synchronized (fIdToCallback) {
- fIdToCallback.put(id, cb); // This is so that it is registered in case callback is invoked from remote vm during expression processing.
- }
- ((ExpressionProxy) callbackProxy).addProxyListener(new ExpressionProxy.ProxyListener() {
- public void proxyResolved(ProxyEvent event) {
- synchronized(fIdToCallback) {
- fCallbackProxyToId.put(event.getProxy(), id);
- }
- }
-
- public void proxyNotResolved(ProxyEvent event) {
- // Failed, so remove registration completely.
- synchronized (fIdToCallback) {
- fIdToCallback.remove(id);
- }
- }
-
- public void proxyVoid(ProxyEvent event) {
- // Failed, so remove registration completely.
- synchronized (fIdToCallback) {
- fIdToCallback.remove(id);
- }
- }
-
- });
- }
- expression.createSimpleMethodInvoke(fInitializeCallback, callbackProxy, new IProxy[] {fRemoteServer, fFactory.getBeanProxyFactory().createBeanProxyWith(id.intValue())}, false);
- }
-
- /**
- * The public interface for deregistering callbacks.
- */
- public void deregisterCallback(IBeanProxy callbackProxy) {
- synchronized(fIdToCallback) {
- Integer id = (Integer) fCallbackProxyToId.remove(callbackProxy);
- fIdToCallback.remove(id);
- }
- }
-
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackThread.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackThread.java
deleted file mode 100644
index 5625d1cd2..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCallbackThread.java
+++ /dev/null
@@ -1,327 +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.remote;
-/*
-
-
- */
-
-import java.io.*;
-import java.net.Socket;
-import java.util.logging.Level;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.common.remote.TransmitableArray;
-import org.eclipse.jem.internal.proxy.core.*;
-
-/**
- * This thread handles the actual callback.
- * It is package protected because no one else should access it.
- */
-class REMCallbackThread extends Thread {
- final REMConnection fConnection; // A connection to use
- final REMCallbackRegistry fServer;
- final REMStandardBeanProxyFactory fFactory;
- final REMStandardBeanTypeProxyFactory fTypeFactory;
- final REMProxyFactoryRegistry registry;
- protected boolean shuttingDown;
- protected boolean inTransaction; // Is this thread currently participating in a transaction, (i.e. reading/writing), if so then we can't use it for another transaction.
-
-
- /**
- * Is this callback thread currently participating in a transaction (reading/writing). If so then it can't be used for an
- * independent new transaction. In other words you can't write/read data using this callback thread's
- * connection because it is being used by someone else expecting to have exclusive read/write on this connection.
- *
- * @return
- *
- * @since 1.1.0
- */
- public boolean inTransaction() {
- return inTransaction;
- }
-
- /**
- * Set whether this callback thread is in a transaction or not. If it is in a transaction it cannot be used
- * for an independent new transaction. In other words you can't write/read data using this callback thread's
- * connection because it is being used by someone else expecting to have exclusive read/write on this connection.
- * @param inTransaction
- *
- * @since 1.1.0
- */
- public void setIntransaction(boolean inTransaction) {
- this.inTransaction = inTransaction;
- }
-
- // Kludge: Bug in Linux 1.3.xxx of JVM. Closing a socket while the socket is being read/accept will not interrupt the
- // wait. Need to timeout to the socket read/accept before the socket close will be noticed. This has been fixed
- // in Linux 1.4. So on Linux 1.3 need to put timeouts in on those sockets that can be separately closed while reading/accepting.
- static boolean LINUX_1_3 = "linux".equalsIgnoreCase(System.getProperty("os.name")) && System.getProperty("java.version","").startsWith("1.3"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-
- public REMCallbackThread(Socket socket, REMCallbackRegistry server, String name, REMProxyFactoryRegistry registry, boolean noTimeouts) {
- super(name);
-
- fConnection = new REMConnection(socket, true); // No timeouts since this is a server thread.
- this.registry = registry;
- fServer = server;
- fFactory = (REMStandardBeanProxyFactory) registry.getBeanProxyFactory();
- fTypeFactory = (REMStandardBeanTypeProxyFactory) registry.getBeanTypeProxyFactory();
- }
-
- /**
- * Request the thread to close down.
- */
- public void close() {
- try {
- shuttingDown = true; // So that if this is a forced close then it will know not to print error msgs.
- if (fConnection.fSocket != null)
- fConnection.fSocket.close();
- } catch (Exception e) {
- }
- }
-
-
- /*
- * Return the IREMConnection associated with this callback. Used by
- * the connection server to return this connection for any requests
- * made on this thread.
- * <package-protected> so that only remote proxy can access.
- */
- IREMConnection getConnection() {
- return fConnection;
- }
-
- public void run() {
-
- DataInputStream in = fConnection.in;
- DataOutputStream out = fConnection.out;
- InputStream ins = null;
- boolean shutdown = false;
- Commands.ValueObject valueObject = new Commands.ValueObject(); // Working value object so not continually recreated.
- BeanProxyValueSender valueSender = new BeanProxyValueSender(this.fFactory); // Working valuesender so not continually recreated.
- try {
- boolean doLoop = true;
-
- /**
- * Note: In the cases below you will see a lot of finally clauses that null variables out.
- * This is because this is a long running loop, and variables declared within blocks are not
- * garbage collected until the method is terminated, so these variables once set would never
- * be GC'd. The nulling at the end of the case makes sure that any of those objects set are
- * now available for garbage collection when necessary.
- */
- while(doLoop) {
- byte cmd = 0;
- try {
- if (LINUX_1_3)
- fConnection.fSocket.setSoTimeout(1000); // Linux 1.3 bug, see static LINUX_1_3 above
- cmd = in.readByte();
- if (LINUX_1_3)
- fConnection.fSocket.setSoTimeout(0); // Linux 1.3 bug, see static LINUX_1_3 above
- } catch (InterruptedIOException e) {
- continue; // Timed out, try again
- }
-
- switch (cmd) {
- case Commands.QUIT_CONNECTION:
- doLoop = false;
- break; // Close this connection
-
- case Commands.TERMINATE_SERVER:
- doLoop = false;
- shutdown = true; // Shutdown everything
- break;
-
- case Commands.CALLBACK:
- int callID = in.readInt(); // The id of the registered callback to call.
- int msgID = in.readInt(); // The id of the message to call.
- Object parm = null;
- Object result = null;
- ICallback cb = null;
- try {
- // The register callback handler will know how to handle the parm,
- // it will know if it is an array of proxies, or an object of some kind.
- fFactory.startTransaction(); // Start a transaction.
- setIntransaction(true); // Also tell ourselves that we are in a transaction.
- boolean isProxies = true;
- try {
- Commands.readValue(in, valueObject);
- if (valueObject.type == Commands.ARRAY_IDS) {
- // It is an array containing IDs, as it normally would be.
- // However it will become IBeanProxy[]. That is because if ID's
- // they must be proxies over here.
- valueSender.initialize(valueObject);
- Commands.readArray(in, valueObject.anInt, valueSender, valueObject, false);
- if (valueSender.getException() != null) {
- close(); // Something wrong, close the thread so next time we get a new one.
- }
- parm = valueSender.getArray();
- } else {
- // It is object or null. It could be an array of objects, or one object.
- isProxies = false;
- parm = valueObject.getAsObject();
- }
- } finally {
- setIntransaction(false);
- fFactory.stopTransaction();
- }
- // Now perform the callback.
- cb = fServer.getRegisteredCallback(callID);
- if (cb != null) {
- // Callback still registered. If proxies, then if first entry is just a proxy,
- // then we are sending only one. A convienence factor for callbacks.
- // If not a single entry of IBeanProxy, then send whole array.
- try {
- if (isProxies)
- if (((Object[]) parm).length == 1 && (((Object[]) parm)[0] == null || ((Object[]) parm)[0] instanceof IBeanProxy))
- result = cb.calledBack(msgID, (IBeanProxy) ((Object[]) parm)[0]);
- else
- result = cb.calledBack(msgID, (Object[]) parm);
- else
- result = cb.calledBack(msgID, parm);
- // We only accept null, IREMBeanProxies, and Object[], where
- // contents of Object[] are bean proxies.
- valueObject.set();
- if (result instanceof IREMBeanProxy)
- ((IREMBeanProxy) result).renderBean(valueObject);
- else if (result instanceof Object[]) {
- class Retriever implements Commands.ValueRetrieve {
- int index = 0;
- Object[] array;
- Commands.ValueObject worker = new Commands.ValueObject();
-
- public Retriever(Object[] anArray) {
- array = anArray;
- }
-
- public Commands.ValueObject nextValue() {
- Object retParm = array[index++];
- if (retParm != null)
- if (retParm instanceof IREMBeanProxy)
- ((IREMBeanProxy) retParm).renderBean(worker);
- else if (retParm instanceof TransmitableArray) {
- // It is another array, create a new
- // retriever.
- worker.setArrayIDS(
- new Retriever(((TransmitableArray) retParm).array),
- ((TransmitableArray) retParm).array.length,
- ((TransmitableArray) retParm).componentTypeID);
- } else {
- // It's an object. Need to get bean
- // type so that we can send it.
- IREMBeanProxy type =
- (IREMBeanProxy) fTypeFactory.getBeanTypeProxy(retParm.getClass().getName());
- if (type == null)
- throw new IllegalArgumentException();
- int classID = type.getID().intValue();
- worker.setAsObject(retParm, classID);
- }
- else
- worker.set();
- return worker;
- }
- };
-
- valueObject.setArrayIDS(
- new Retriever((Object[]) result),
- ((Object[]) result).length,
- Commands.OBJECT_CLASS);
- }
-
- Commands.sendCallbackDoneCommand(out, valueObject, Commands.NO_ERROR);
- } catch (RuntimeException e) {
- // Something happened, turn it into an error object
- // to send back.
- valueObject.set(e.getClass().getName() + ':' + e.getLocalizedMessage());
- Commands.sendCallbackDoneCommand(out, valueObject, Commands.CALLBACK_RUNTIME_EXCEPTION);
- ProxyPlugin.getPlugin().getLogger().log(e, Level.INFO); // Just log it, but assume safe enough to just go back and wait for next callback request.
- }
- } else {
- valueObject.set();
- Commands.sendCallbackDoneCommand(out, valueObject, Commands.CALLBACK_NOT_REGISTERED); // Send error msg back to indicate we weren't registered.
- }
- } finally {
- parm = null; // Clear out for GC to work
- result = null;
- cb = null;
- valueObject.set();
- valueSender.clear();
- }
- break;
-
- case Commands.CALLBACK_STREAM:
- // A request for a stream
- callID = in.readInt(); // The id of the registered callback to call.
- msgID = in.readInt(); // The id of the message to call.
- cb = null;
- try {
- // Now perform the callback.
- cb = fServer.getRegisteredCallback(callID);
- if (cb != null) {
- // Callback still registered
- valueObject.set();
- Commands.sendCallbackDoneCommand(out, valueObject, Commands.NO_ERROR); // Send null to let it know we've accepted the stream
- ins = new REMCallbackInputStream(in, out);
- try {
- cb.calledBackStream(msgID, ins);
- } finally {
- try {
- ins.close(); // Make sure it's closed.
- } catch (IOException e) {
- // Exception while closing, just log it and then mark to end the loop so we close connection too.
- doLoop = false;
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "In REMCallbackThread", e)); //$NON-NLS-1$
- }
- }
- } else {
- valueObject.set();
- Commands.sendCallbackDoneCommand(out, valueObject, Commands.CALLBACK_NOT_REGISTERED); // Send error msg back to indicate we weren't registered.
- }
- } finally {
- cb = null; // Clear out for GC to work
- ins = null;
- valueObject.set();
- }
- break;
-
- default:
- // Unknown command. We don't know how long the command is, so we need to close the connection.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "REMCallback: Invalid cmd sent="+cmd, null)); //$NON-NLS-1$
- doLoop = false;
- break;
- }
- }
- } catch (EOFException e) {
- // This is ok. It means that the connection on the other side was terminated.
- // So just accept this and go down.
- } catch (Exception e) {
- if (!shuttingDown)
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "In REMCallbackThread", e)); //$NON-NLS-1$
- } finally {
- if (in != null)
- try {
- in.close();
- } catch (Exception e) {
- }
- if (out != null)
- try {
- out.close();
- } catch (Exception e) {
- }
- close();
- }
- fServer.removeCallbackThread(this);
- if (shutdown)
- fServer.requestShutdown();
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanProxy.java
deleted file mode 100644
index 4fc5cf994..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanProxy.java
+++ /dev/null
@@ -1,150 +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.remote;
-/*
- * $RCSfile: REMCharacterClassBeanProxy.java,v $ $Revision: 1.6 $ $Date: 2005/08/24 20:39:06 $
- */
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * IDE Implementation of ICharacterBeanProxy for the Character class. Creation date: (2/6/00
- * 9:02:54 AM) @author: Joe Winchester
- */
-final class REMCharacterClassBeanProxy extends REMConstantBeanProxy implements ICharacterBeanProxy {
- protected Character fCharValue;
-
- /**
- * As well as storing the bean store the char value so that we can return the charValue faster
- * without the need for repeated re-casting. It is package protected because it is created in
- * special way, so no one else should create these.
- *
- * @param aBean
- * java.lang.Object
- */
- REMCharacterClassBeanProxy(REMProxyFactoryRegistry aRegistry, Character value) {
- super(aRegistry);
- fCharValue = value;
- }
-
- /**
- * equals: Equal if: 1) This proxy == (identity) to the other object 2) Else if other is an
- * IBeanProxy and not a constant one, then if equals on the server. 3) If this is a constant
- * proxy and the other is too or is a constant value (e.g. IStringBeanProxy.equals(String),
- * then true if values are equals.
- */
- public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMCharacterClassBeanProxy)
- return fCharValue.charValue() == ((REMCharacterClassBeanProxy) anObject).charValue();
- if (anObject instanceof Character)
- return fCharValue.charValue() == ((Character) anObject).charValue();
- return false;
- }
-
- /**
- * Return the char value
- */
- public char charValue() {
- return fCharValue.charValue();
- }
- /**
- * Return the java.lang.Character value
- */
- public Character characterValue() {
- return fCharValue;
- }
-
- /**
- * Answer the toString() of the value.
- */
- public String toBeanString() {
- return fCharValue.toString();
- }
-
- /**
- * Get the beantype
- */
- public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).characterClass;
- }
-
- /**
- * Render the bean into value object.
- */
- public void renderBean(Commands.ValueObject value) {
- value.set(fCharValue);
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#byteValue()
- */
- public byte byteValue() {
- return (byte) fCharValue.charValue();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#doubleValue()
- */
- public double doubleValue() {
- return fCharValue.charValue();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#floatValue()
- */
- public float floatValue() {
- return fCharValue.charValue();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#intValue()
- */
- public int intValue() {
- return fCharValue.charValue();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#longValue()
- */
- public long longValue() {
- return fCharValue.charValue();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#numberValue()
- */
- public Number numberValue() {
- return new Integer(charValue()); // Kludge.
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#shortValue()
- */
- public short shortValue() {
- return (short) fCharValue.charValue();
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanTypeProxy.java
deleted file mode 100644
index b3d9ff7da..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterClassBeanTypeProxy.java
+++ /dev/null
@@ -1,85 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * Character BeanType Proxy for Character.class.
- * Creation date: (2/23/00 1:59:02 PM)
- * @author: Richard Lee Kulp
- */
-final class REMCharacterClassBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMConstantBeanTypeProxy {
- final REMCharacterClassBeanProxy nilProxy; // Value of '\0'
-
-REMCharacterClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy objectType) {
- super(aRegistry, new Integer(Commands.CHARACTER_CLASS), Character.class.getName(), objectType);
-
- nilProxy = new REMCharacterClassBeanProxy(aRegistry, new Character('\0'));
-}
-/**
- * Static helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-ICharacterBeanProxy createCharacterBeanProxy(Character aCharacter) {
- return (aCharacter.charValue() != '\0') ?
- new REMCharacterClassBeanProxy(fRegistry, aCharacter) : nilProxy;
-}
-
-/**
- * Create a new bean proxy with the specified id.
- *
- * For all of the primitive wrapper types, this is an invalid operation. They are created
- * explicitly through the appropriate create method.
- */
-public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the primitive wrapper types, they are final classes, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newInstance method. Character doesn't have a default ctor, so the standard way won't work.
- * Return the nilProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return nilProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createCharacterBeanProxy(new Character(value.aChar));
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanProxy.java
deleted file mode 100644
index 1c8966bc3..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanProxy.java
+++ /dev/null
@@ -1,155 +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.remote;
-/*
- * $RCSfile: REMCharacterTypeBeanProxy.java,v $ $Revision: 1.6 $ $Date: 2005/08/24 20:39:07 $
- */
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote implementation of ICharacterBeanProxy. Creation date: (2/6/00 9:02:54 AM) @author: Joe
- * Winchester
- */
-final class REMCharacterTypeBeanProxy extends REMConstantBeanProxy implements ICharacterBeanProxy {
- protected char fChar;
-
- REMCharacterTypeBeanProxy(REMProxyFactoryRegistry aRegistry, char value) {
- super(aRegistry);
- fChar = value;
- }
-
- /**
- * equals: Equal if: 1) This proxy == (identity) to the other object 2) Else if other is an
- * IBeanProxy and not a constant one, then if equals on the server. 3) If this is a constant
- * proxy and the other is too or is a constant value (e.g. IStringBeanProxy.equals(String),
- * then true if values are equals.
- */
- public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMCharacterTypeBeanProxy)
- return fChar == ((REMCharacterTypeBeanProxy) anObject).charValue();
- if (anObject instanceof Character)
- return fChar == ((Character) anObject).charValue();
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
- public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMCharacterTypeBeanProxy)
- return fChar == ((REMCharacterTypeBeanProxy) aBeanProxy).charValue();
- return false;
- }
-
- /**
- * Return the char value
- */
- public char charValue() {
- return fChar;
- }
- /**
- * Return the java.lang.Character value
- */
- public Character characterValue() {
- return new Character(fChar);
- }
-
- /**
- * Answer the toString() of the value.
- */
- public String toBeanString() {
- return String.valueOf(fChar);
- }
-
- /**
- * Get the beantype
- */
- public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).charType;
- }
-
- /**
- * Render the bean into value object.
- */
- public void renderBean(Commands.ValueObject value) {
- value.set(fChar);
- }
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#byteValue()
- */
- public byte byteValue() {
- return (byte) fChar;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#doubleValue()
- */
- public double doubleValue() {
- return fChar;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#floatValue()
- */
- public float floatValue() {
- return fChar;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#intValue()
- */
- public int intValue() {
- return fChar;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#longValue()
- */
- public long longValue() {
- return fChar;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#numberValue()
- */
- public Number numberValue() {
- return new Integer(fChar); // Kludge
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.INumberBeanProxy#shortValue()
- */
- public short shortValue() {
- return (short) fChar;
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanTypeProxy.java
deleted file mode 100644
index 2c9f309af..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMCharacterTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,66 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * Character.TYPE BeanType Proxy.
- * Creation date: (2/23/00 1:59:02 PM)
- * @author: Richard Lee Kulp
- */
-final class REMCharacterTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-
- final REMCharacterTypeBeanProxy nilProxy; // Value of '\0'
-/**
- * REMCharacterBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMCharacterTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.CHARACTER_TYPE), Character.TYPE.getName());
-
- nilProxy = new REMCharacterTypeBeanProxy(aRegistry, '\0');
-}
-
-/**
- * Static helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- * Use the cache.
- */
-ICharacterBeanProxy createCharacterBeanProxy(char aCharacter) {
- return new REMCharacterTypeBeanProxy(fRegistry, aCharacter);
-}
-
-/**
- * newInstance method. Character doesn't have a default ctor, so the standard way won't work.
- * Return the nilProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return nilProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createCharacterBeanProxy(value.aChar);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMClassBeanTypeProxy.java
deleted file mode 100644
index cd8da01cf..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMClassBeanTypeProxy.java
+++ /dev/null
@@ -1,75 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * This is a bean type for the Class object. It is needed so that
- * when a new object id comes in that represents a class, it will
- * go through this bean type to create it. We need to do something
- * special so that the correct bean type object is created.
- */
-
-final class REMClassBeanTypeProxy extends REMAbstractBeanTypeProxy {
-
-
-REMClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy objectType) {
- super(aRegistry, new Integer(Commands.CLASS_CLASS), Class.class.getName(), objectType);
-}
-
-/**
- * Note: Since new instances of Class are never done through a default ctor,
- * this function is not supported.
- */
-public IBeanProxy newInstance() {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Note: Since new instances of Class are never done through a initialization strings,
- * this function is not supported.
- */
-public IBeanProxy newInstance(String initializationString) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * NOTE: Since the Class type is final, this function isn't supported.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Create a new bean proxy with the specified id.
- *
- * In this case it means we need a new IBeanProxyType. We will let the
- * Beantype factory handle this since it knows how to get the information
- * for a specific id.
- */
-public IREMBeanProxy newBeanProxy(Integer anID) {
- return ((REMStandardBeanTypeProxyFactory) fRegistry.getBeanTypeProxyFactory()).createBeanTypeProxy(anID);
-}
-
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConnection.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConnection.java
deleted file mode 100644
index d37e8007f..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConnection.java
+++ /dev/null
@@ -1,342 +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.remote;
-/*
-
-
- */
-
-
-import java.io.*;
-import java.net.Socket;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands.*;
-import org.eclipse.jem.internal.proxy.core.ProxyPlugin;
-import org.eclipse.jem.util.TimerTests;
-/**
- * The default implementation of the connection.
- *
- * It uses the property "proxyvm.bufsize" to determine the buffer size to use. If not specified, it uses the system default
- */
-public class REMConnection implements IREMConnection, IREMExpressionConnection {
-
- public final static String INVOKE_STEP = "Invoke"; //$NON-NLS-1$
- public final static String INVOKE_METHOD_STEP = "Invoke Method"; //$NON-NLS-1$
- protected Socket fSocket = null;
- protected DataInputStream in = null;
- protected DataOutputStream out = null;
- private static final int TIME_OUT = 1000 * 60; // Wait up to a minute before timeout.
-
- public REMConnection(Socket socket, boolean noTimeouts) {
- try {
- fSocket = socket;
- fSocket.setSoLinger(true, 30); // Wait 30 seconds if necessary for the final stuff to go out after closing.
- if (!noTimeouts)
- fSocket.setSoTimeout(TIME_OUT); // Timeout period
- Integer bufSize = Integer.getInteger("proxyvm.bufsize"); //$NON-NLS-1$
- if (bufSize == null)
- bufSize = new Integer(16000);
- out = new DataOutputStream(new BufferedOutputStream(fSocket.getOutputStream(), bufSize.intValue())); // It didn't take the hint, so we will buffer it.
- in = new DataInputStream(new BufferedInputStream(fSocket.getInputStream(), bufSize.intValue())); // It didn't take the hint, so we will buffer it.
- } catch (IOException e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
-
- if (out != null)
- try {
- out.close();
- } catch (IOException e2) {
- }
- if (in != null)
- try {
- in.close();
- } catch (IOException e3) {
- }
- try {
- fSocket.close();
- } catch (IOException e4) {
- }
- fSocket = null;
- in = null;
- out = null;
- }
- }
-
- /**
- * Did this construct correctly.
- * This is needed because an exception could be thrown in the ctor and
- * that's not a good thing to do.
- */
- public boolean isConnected() {
- return fSocket != null;
- }
-
- /**
- * Terminate the server.
- */
- public void terminateServer() {
- if (isConnected()) {
- try {
- Commands.sendTerminateCommand(out);
- } catch (IOException e) {
- }
- close();
- }
- }
-
- /**
- * Close the connection.
- */
- public void close() {
- if (isConnected()) {
- try {
- Commands.sendQuitCommand(out);
- } catch (IOException e) {
- } finally {
- try {
- out.close();
- } catch (IOException e2) {
- }
- try {
- in.close();
- } catch (IOException e3) {
- }
- try {
- fSocket.close();
- } catch (IOException e4) {
- }
- }
- fSocket = null;
- in = null;
- out = null;
- }
- }
-
-
- /**
- * Return the class information.
- */
- public GetClassReturn getClass(String className) throws CommandException {
- if (isConnected())
- try {
- // It's simple, just pass onto Commands.
- return Commands.sendGetClassCommand(out, in, className);
- } catch (CommandErrorException e) {
- if (e.getErrorCode() != Commands.GET_CLASS_NOT_FOUND)
- throw e; // Not class not found, send it on
- }
- return null; // Not found, so return null
- }
-
-
- /**
- * Return the class information given an ID.
- */
- public GetClassIDReturn getClassFromID(int classID) throws CommandException {
- if (isConnected()) {
- // It's simple, just pass onto Commands.
- return Commands.sendGetClassFromIDCommand(out, in, classID);
- }
- return null; // Not found, so return null
- }
-
- /**
- * Get the object data from an id.
- */
- public void getObjectData(int classID, Commands.ValueObject valueReturn) throws CommandException {
- if (isConnected()) {
- // Just pass onto Commands.
- Commands.sendGetObjectData(out, in, classID, valueReturn);
- } else
- valueReturn.set(); // Set it to null since we aren't connected.
- }
-
- /**
- * Get a new instance using an init string
- */
- public void getNewInstance(int classID, String initString, Commands.ValueObject newInstance) throws CommandException {
- if (isConnected()) {
- // Just pass onto Commands.
- Commands.sendNewInstance(out, in, classID, initString, newInstance);
- } else
- newInstance.set(); // Set it to null since we aren't connected.
- }
-
- /**
- * Release the id.
- */
- public void releaseID(int id){
- if (isConnected())
- try {
- // Just pass onto Commands.
- Commands.releaseObjectCommand(out, id);
- } catch (IOException e) {
- // Don't care it didn't work
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMConnection#getArrayContents(int, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void getArrayContents(int arrayID, Commands.ValueObject returnValue) throws CommandException {
- if (isConnected()) {
- // It's simple, just pass onto Commands.
- Commands.sendGetArrayContentsCommand(out, in, arrayID, returnValue);
- }
- }
-
- /**
- * Invoke the method call
- */
- public void invokeMethod(int methodID, Commands.ValueObject invokeOn, Commands.ValueObject parms, Commands.ValueObject returnValue) throws CommandException {
- if (isConnected()) {
- // It's simple, just pass onto Commands.
- TimerTests.basicTest.startCumulativeStep(INVOKE_METHOD_STEP);
- Commands.sendInvokeMethodCommand(out, in, methodID, invokeOn, parms, returnValue);
- TimerTests.basicTest.stopCumulativeStep(INVOKE_METHOD_STEP);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMConnection#invokeMethod(org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject, java.lang.String, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void invokeMethod(ValueObject classType, String methodName, ValueObject parmTypes, ValueObject invokeOn, ValueObject parms,
- ValueObject returnValue) throws CommandException {
- if (isConnected()) {
- // It's simple, just pass onto Commands.
- TimerTests.basicTest.startCumulativeStep(INVOKE_STEP);
- Commands.sendInvokeMethodCommand(out, in, classType, methodName, parmTypes, invokeOn, parms, returnValue);
- TimerTests.basicTest.stopCumulativeStep(INVOKE_STEP);
- }
- }
-
- /* ************************************************************
- * Put the Expression processing commands here.
- *
- * ************************************************************/
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#startExpressionProcessing()
- */
- public void startExpressionProcessing(int expressionID, byte trace) throws IOException {
- if (isConnected())
- ExpressionCommands.sendStartExpressionProcessingCommand(expressionID, trace, out);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#pushExpressionCommand(byte)
- */
- public void pushExpressionCommand(int expressionID, byte subcommand) throws IOException {
- if (isConnected())
- ExpressionCommands.sendExpressionCommand(expressionID, out, subcommand);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#stopExpressionProcessing()
- */
- public void stopExpressionProcessing(int expressionID) throws IOException {
- if (isConnected())
- ExpressionCommands.sendEndExpressionProcessingCommand(expressionID, out);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#pushValueObject(org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void pushValueObject(ValueObject valueObject) throws CommandException {
- if (isConnected())
- Commands.writeValue(out, valueObject, false);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#pushByte(byte)
- */
- public void pushByte(byte abyte) throws IOException {
- if (isConnected())
- ExpressionCommands.sendByte(out, abyte);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#pushInt(int)
- */
- public void pushInt(int anInt) throws IOException {
- if (isConnected())
- ExpressionCommands.sendInt(out, anInt);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#pushString(java.lang.String)
- */
- public void pushString(String aString) throws IOException {
- if (isConnected())
- ExpressionCommands.sendString(out, aString);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#pushBoolean(boolean)
- */
- public void pushBoolean(boolean aBool) throws IOException {
- if (isConnected())
- ExpressionCommands.sendBoolean(out, aBool);
- }
-
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#getFinalValue(org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void getFinalValue(ValueObject result) throws CommandException {
- if (isConnected())
- Commands.readBackValue(in, result, Commands.NO_TYPE_CHECK);
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#pullValue(int, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void pullValue(int expressionID, ValueObject proxyids, ValueSender sender) throws CommandException {
- if (isConnected())
- ExpressionCommands.sendPullValueCommand(expressionID, out, in, proxyids, sender);
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMExpressionConnection#sync(int, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void sync(int expressionID, ValueObject proxyids, ValueSender sender) throws CommandException {
- if (isConnected())
- ExpressionCommands.sendSyncCommand(expressionID, out, in, proxyids, sender);
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.IREMConnection#readProxyArrayValues(org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject, org.eclipse.jem.internal.proxy.common.remote.Commands.ValueSender, boolean)
- */
- public void readProxyArrayValues(Commands.ValueObject returnValue, Commands.ValueSender valueSender, boolean allowFlag) throws CommandException {
- if (isConnected())
- Commands.readArray(in, returnValue.anInt, valueSender, returnValue, allowFlag);
- }
-
- public void transferExpression(int expressionID, ValueObject expController) throws CommandException {
- if (isConnected())
- ExpressionCommands.sendTransferExpressionCommand(expressionID, out, in, expController);
- }
-
- public void resumeExpression(int expressionID, ValueObject expController) throws CommandException {
- if (isConnected())
- ExpressionCommands.sendResumeExpressionCommand(expressionID, out, expController);
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstantBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstantBeanProxy.java
deleted file mode 100644
index 7742b5bb3..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstantBeanProxy.java
+++ /dev/null
@@ -1,100 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.IBeanProxy;
-import org.eclipse.jem.internal.proxy.core.ProxyFactoryRegistry;
-/**
- * This is a base for bean proxies that are constants and
- * do not have an object on the remote VM side. They are
- * shipped back and forth by value.
- */
-
-public abstract class REMConstantBeanProxy implements IREMConstantBeanProxy {
- protected final REMProxyFactoryRegistry fFactory;
- private final static Integer ID = new Integer(Commands.NOT_AN_ID);
-
- protected REMConstantBeanProxy(REMProxyFactoryRegistry aFactory) {
- fFactory = aFactory;
- }
- /**
- * Return the registry this proxy was created with.
- */
- public ProxyFactoryRegistry getProxyFactoryRegistry() {
- return fFactory;
- }
-
- /**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- * This is abstract because each type needs to do a unique test for equality.
- */
- public abstract boolean equals(Object anObject);
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
- public boolean sameAs(IBeanProxy aBeanProxy) {
- // We can't be assured that there are not non-identical constants that are actually identical.
- // This is because for constants we do not know the id of the original. That is not sent across from the vm.
- return this == aBeanProxy;
- }
-
- /**
- * Return the ID of this proxy.
- * Constants have no id's, so we return -1.
- */
- public Integer getID() {
- return ID;
- }
-
- /**
- * isValid. Constant ones are always valid unless the registry is terminated, except if an
- * override releases resources. In that case the overriding
- * subclass should also override isValid() to return false
- * if release() was called.
- */
- public boolean isValid() {
- return fFactory.isValid();
- }
-
- /**
- * release. Constant ones don't need to typically be released, however
- * if an override does do something to release, then it MUST also
- * override isValid() to return false.
- */
- public void release() {
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isBeanProxy()
- */
- public final boolean isBeanProxy() {
- return true;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isExpressionProxy()
- */
- public final boolean isExpressionProxy() {
- return false;
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorProxy.java
deleted file mode 100644
index 555670a3c..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorProxy.java
+++ /dev/null
@@ -1,109 +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.remote;
-/*
-
-
- */
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.common.remote.TransmitableArray;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Proxy for a constructor.
- */
-
-final class REMConstructorProxy extends REMAccessibleObjectProxy implements IConstructorProxy {
-
- REMConstructorProxy(REMProxyFactoryRegistry aRegistry, Integer anID) {
- super(aRegistry, anID);
- }
-
- /**
- * Using this constructor (assuming it takes no arguments) create a new instance.
- * Exception will be raised if this constructor takes arguments.
- */
- public IBeanProxy newInstance() throws ThrowableProxy {
- return newInstance(null);
- }
-
- /**
- * The type proxy is constant proxy out of the method factory.
- */
- public IBeanTypeProxy getTypeProxy() {
- return ((REMMethodProxyFactory) fFactory.getMethodProxyFactory()).ctorType;
- }
-
- /**
- * Using this constructor (with the arguments) create a new instance.
- * Exception will be raised if arguments don't match the constructor.
- */
- public IBeanProxy newInstance(IBeanProxy[] creationArguments) throws ThrowableProxy {
- IREMMethodProxy newInstanceMethod =
- (IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getConstructorNewInstance();
-
- // Constructor.newInstance takes one parm (Object[]) where [0] is an Object[] of the arguments to the constructor.
- Object[] parms = null;
- if (creationArguments != null)
- parms = new Object[] { new TransmitableArray(Commands.OBJECT_CLASS, creationArguments)};
-
- return newInstanceMethod.invokeWithParms(this, parms);
- }
- public IBeanProxy newInstanceCatchThrowableExceptions() {
- try {
- return newInstance();
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- fFactory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
- public IBeanProxy newInstanceCatchThrowableExceptions(IBeanProxy[] args) {
- try {
- return newInstance(args);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- fFactory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
- private IBeanTypeProxy[] fParameterTypes;
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IConstructorProxy#getParameterTypes()
- */
- public synchronized IBeanTypeProxy[] getParameterTypes() {
- if (fParameterTypes == null) {
- IArrayBeanProxy parmTypes = (IArrayBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory)
- .getConstructorParameterTypesMessage().invokeCatchThrowableExceptions(this);
- if (parmTypes == null)
- fParameterTypes = new IBeanTypeProxy[0]; // There was some error, only way null is returned
- else {
- int len = parmTypes.getLength();
- fParameterTypes = new IBeanTypeProxy[len];
- for (int i = 0; i < len; i++)
- try {
- fParameterTypes[i] = (IBeanTypeProxy) parmTypes.get(i);
- } catch (ThrowableProxy e) {
- }
- fFactory.releaseProxy(parmTypes); // Don't need the array on the server anymore.
- }
- }
-
- return fParameterTypes;
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorTypeProxy.java
deleted file mode 100644
index 831ab2859..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMConstructorTypeProxy.java
+++ /dev/null
@@ -1,67 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * BeanType Proxy for Method class.
- */
-
-final class REMConstructorTypeProxy extends REMAbstractBeanTypeProxy {
-
-REMConstructorTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy accessibleTypeProxy) {
- super(aRegistry, new Integer(Commands.CONSTRUCTOR_CLASS), java.lang.reflect.Constructor.class.getName(), accessibleTypeProxy);
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the accessible object types, they are final classes, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Specialized from REMAbstractBeanTypeProxy to ensure Constructor proxies are created correctly.
- */
-public IREMBeanProxy newBeanProxy(Integer objectID) {
- return new REMConstructorProxy(fRegistry, objectID);
-}
-
-/**
- * Note: Since new instances of Constructor are never done through a default ctor,
- * this function is not supported.
- */
-public IBeanProxy newInstance() {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Note: Since new instances of Constructor are never done through an initialization string,
- * this function is not supported.
- */
-public IBeanProxy newInstance(String initializationString) {
- throw new UnsupportedOperationException();
-}
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanProxy.java
deleted file mode 100644
index 1b124dc24..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanProxy.java
+++ /dev/null
@@ -1,44 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Proxy for Double.class.
- */
-class REMDoubleClassBeanProxy extends REMNumberBeanProxy {
-
-REMDoubleClassBeanProxy(REMProxyFactoryRegistry aRegistry, Double aDouble) {
- super(aRegistry, aDouble);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).doubleClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set((Double) numberValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanTypeProxy.java
deleted file mode 100644
index 1f316f77f..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleClassBeanTypeProxy.java
+++ /dev/null
@@ -1,73 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Double.class.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMDoubleClassBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMDoubleClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.DOUBLE_CLASS), Double.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMDoubleClassBeanProxy(aRegistry, new Double(0D));
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createDoubleBeanProxy(Double aDouble) {
- return (aDouble.doubleValue() != 0D) ?
- new REMDoubleClassBeanProxy(fRegistry, aDouble) : zeroProxy;
-}
-
-/**
- * Generic way to create an Double proxy, however, the Number must be a Double.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createDoubleBeanProxy((Double) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createDoubleBeanProxy(new Double(value.aDouble));
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanProxy.java
deleted file mode 100644
index 90f075c1a..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanProxy.java
+++ /dev/null
@@ -1,133 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote Implementation of INumberProxy for the primitive "double".
- * It can answer all of the primitive number types (int, long, short, byte, double, float).
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-class REMDoubleTypeBeanProxy extends REMConstantBeanProxy implements INumberBeanProxy {
- private final double fDouble;
-
-/**
- * It is package protected because they are created
- * in a special way and no one else should create them.
- * @param aBean java.lang.Object
- */
-REMDoubleTypeBeanProxy(REMProxyFactoryRegistry aRegistry, double aDouble) {
- super(aRegistry);
- fDouble = aDouble;
-}
-
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMDoubleTypeBeanProxy)
- return fDouble == ((REMDoubleTypeBeanProxy) anObject).doubleValue();
- if (anObject instanceof Double)
- return fDouble == ((Double) anObject).doubleValue();
- return false;
-}
-
-/* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
-public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMDoubleTypeBeanProxy)
- return fDouble == ((REMDoubleTypeBeanProxy) aBeanProxy).doubleValue();
- return false;
-}
-
-/**
- * byteValue method comment.
- */
-public byte byteValue() {
- return (byte) fDouble;
-}
-/**
- * doubleValue method comment.
- */
-public double doubleValue() {
- return fDouble;
-}
-/**
- * floatValue method comment.
- */
-public float floatValue() {
- return (float) fDouble;
-}
-/**
- * Return the int value
- */
-public int intValue() {
- return (int) fDouble;
-}
-/**
- * longValue method comment.
- */
-public long longValue() {
- return (long) fDouble;
-}
-/**
- * numberValue method comment.
- */
-public Number numberValue() {
- return new Double(fDouble);
-}
-/**
- * shortValue method comment.
- */
-public short shortValue() {
- return (short) fDouble;
-}
-
-/**
- * The bean's toString.
- */
-public String toBeanString() {
- return String.valueOf(fDouble);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).doubleType;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fDouble);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanTypeProxy.java
deleted file mode 100644
index aa17f7d65..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMDoubleTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,98 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Double.TYPE
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMDoubleTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMDoubleTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.DOUBLE_TYPE), Double.TYPE.getName());
-
- // Create the cached values
- zeroProxy = new REMDoubleTypeBeanProxy(aRegistry, 0D);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createDoubleBeanProxy(double aDouble) {
- return (aDouble != 0D) ?
- new REMDoubleTypeBeanProxy(fRegistry, aDouble) : zeroProxy;
-}
-
-/**
- * newInstance method. double is a primitive, so the standard way won't work.
- * Return the zeroProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createDoubleBeanProxy(value.aDouble);
-}
-
-/**
- * Short cut for newInstance where the string follows the
- * specific pattern we expect. That way it won't be necessary to ship over to the vm
- * to process it.
- *
- * The pattern it can accept is:
- * 1) (double) validNumber - number can be any number because (double) explicitly casts it down.
- * 2) validNumber
- * It will use the decode function of double to determine the valid number.
- */
-public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- String trim = initializationString.trim();
- if (trim.length() == 0)
- return super.newInstance(initializationString);
- double aDouble;
- if (trim.startsWith("(double)")) { //$NON-NLS-1$
- Number v = parseString(trim.substring("(double)".length()).trim()); //$NON-NLS-1$
- if (v != null)
- aDouble = v.doubleValue();
- else
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- } else {
- try {
- aDouble = Double.valueOf(initializationString).doubleValue(); // See if valid double format.
- } catch (NumberFormatException e) {
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- }
- }
-
- return getProxyFactoryRegistry().getBeanProxyFactory().createBeanProxyWith(aDouble);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMExpression.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMExpression.java
deleted file mode 100644
index ee7f450a0..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMExpression.java
+++ /dev/null
@@ -1,1864 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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.remote;
-
-import java.io.*;
-import java.util.*;
-import java.util.logging.Level;
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.initParser.tree.*;
-
-/**
- * The Remote proxy version of Expression.
- *
- * @since 1.0.0
- */
-public class REMExpression extends Expression {
-
- private IREMExpressionConnection connection;
- private boolean closed; // Are we closed.
-
- protected Commands.ValueObject workerValue; // A worker object so that we don't need to keep creating one and throwing it away.
-
- protected Map beanTypeCache; // Use to cache pending BeanTypes. Used in conjunction with REMStandardBeanTypeFactory.
- protected Map methodsCache; // Use to cache pending expression method proxies. Used in conjunction with REMProxyConsants.
- protected Map fieldsCache; // Use to cache pending expression field proxies. Used in conjunction with REMProxyConsants.
-
- /*
- * This is very special list. It tries to eliminate unneeded traffic. For example a mark immediately followed by an endmark does
- * not need to be sent. Many expressions can look like: mark, endmark, endtransaction. This is a do nothing and we don't want
- * to create a connection to just send this. So this list is used to queue up these and remove them too when found as not needed.
- *
- * However, this is very tricky because all pushToProxy transactions that actually do something MUST call the processPending() method
- * first to make sure any pending transactions are submitted. Because once a real type transaction, such as assignment occurs, any
- * pending transaction is a valid transaction, and no longer a do-nothing transaction.
- *
- * Each transaction type uses a subclass of PendingTransaction to be an entry on the list.
- *
- * The pendings currently supported are:
- * mark/endmark
- * try/catch/endtry
- * block/endblock
- *
- * See each individual transaction type to see how it is handled.
- */
- protected List pendingTransactions;
-
- /**
- * PendingTransaction entry.
- *
- * @since 1.1.0
- */
- protected abstract static class PendingTransaction {
-
- /**
- * The transaction is now being pushed. The implementation should
- * actually do the push.
- *
- * @param remExpression The REMExpression for this transaction.
- *
- * @since 1.1.0
- */
- public abstract void pushTransaction(REMExpression remExpression);
- }
-
- /**
- * @param registry
- *
- * @since 1.0.0
- */
- public REMExpression(REMProxyFactoryRegistry registry) {
- super(registry);
- }
-
- /**
- * Return the expression id for this REMExpression. This id is used on the remote vm to
- * identify who the request is for.
- * @return
- *
- * @since 1.1.0
- */
- protected int getREMExpressionID() {
- return this.hashCode();
- }
- /**
- * Get the pending transactions list.
- * @return
- *
- * @since 1.1.0
- */
- protected List getPendingTransactions() {
- if (pendingTransactions == null)
- pendingTransactions = new ArrayList();
- return pendingTransactions;
- }
-
- // Use this flag when debugging to test if errors are due to improper pending processing.
- // If true they will be treated as if not pending and will be executed immediately.
- private static final boolean EXECUTE_PENDING_IMMEDIATELY = false;
- protected void addPendingTransaction(PendingTransaction pending) {
- if (!EXECUTE_PENDING_IMMEDIATELY)
- getPendingTransactions().add(pending);
- else
- pending.pushTransaction(this);
- }
-
- private boolean sentData; // Flag to indicate if we have sent anything yet to the remote vm. This is used for the pending optimizations.
-
- /**
- * Have we sent any data in this transaction yet.
- * @return
- *
- * @since 1.1.0
- */
- protected boolean haveSentData() {
- return sentData;
- }
-
- /**
- * @return Returns the connection.
- *
- * @since 1.1.0
- */
- protected IREMExpressionConnection getConnection() {
- if (connection == null) {
- if (!sentData)
- getREMBeanProxyFactory().startTransaction(); // This is the first time we send data, so start transaction.
-
- sentData = true; // If we are getting a transaction, that means we are sending data.
- connection = (IREMExpressionConnection) getREMRegistry().getFreeConnection();
- // This will actually not be stopped until closeproxy. There could be a slight problem if the expression is never closed.
- // But that shouldn't happen. This is to prevent any proxy that was released during the execution but was used by
- // the expression from being released on the remote vm until after the expression is finished.
- try {
- if (workerValue == null)
- workerValue = new Commands.ValueObject();
- if (expressionProcesserController == null) {
- byte trace = !isTraceSet() ? ExpressionCommands.TRACE_DEFAULT : (isTrace() ? ExpressionCommands.TRACE_ON : ExpressionCommands.TRACE_OFF);
- connection.startExpressionProcessing(getREMExpressionID(), trace); // It is a new expression.
- } else {
- fillProxy(expressionProcesserController, workerValue);
- connection.resumeExpression(getREMExpressionID(), workerValue);
- expressionProcesserController = null;
- }
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- if (!e.isRecoverable()) {
- connection.close();
- connection = null;
- }
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- return connection;
- }
-
- /**
- * General IOException occurred msg.
- */
- protected static final String IO_EXCEPTION_MSG = ProxyRemoteMessages.REMExpression_IOExceptionSeeLog_INFO_;
-
- protected static final String COMMAND_EXCEPTION_MSG = ProxyRemoteMessages.REMExpression_CommandExceptionSeeLog_INFO_;
-
- /**
- * Throw an an illegal state exception if some general error, in particular an I/O or Command Exception
- * occurred so that callers know there is something wrong.
- *
- * @param msg
- * @throws IllegalStateException
- *
- * @since 1.0.0
- */
- protected void throwIllegalStateException(String msg) throws IllegalStateException {
- throw new IllegalStateException(msg);
- }
-
- /**
- * Return the registry as a REMProxyFactoryRegistry
- * @return
- *
- * @since 1.0.0
- */
- protected final REMProxyFactoryRegistry getREMRegistry() {
- return (REMProxyFactoryRegistry) registry;
- }
-
- /**
- * Return the bean proxy factory as a REMStandardBeanProxyFactory.
- * @return
- *
- * @since 1.0.0
- */
- protected final REMStandardBeanProxyFactory getREMBeanProxyFactory() {
- return (REMStandardBeanProxyFactory) beanProxyFactory;
- }
-
- /**
- * Process any pending transactions.
- * <p>
- * <b>Note: </b>It is required that all non-pending-participating transactions must
- * call this method first to make sure pending transactions are sent. If this is
- * not done, there will be errors in the expression.
- *
- *
- * @since 1.1.0
- */
- protected void processPendingTransactions() {
- if (pendingTransactions != null && !pendingTransactions.isEmpty()) {
- try {
- for (int i = 0; i < pendingTransactions.size(); i++) {
- ((PendingTransaction) pendingTransactions.get(i)).pushTransaction(this);
- }
- } finally {
- pendingTransactions.clear();
- }
- }
- }
-
- /**
- * Get the pending entry from top. If top is 1, then get top entry (i.e. last one added), 2 is next one.
- * @param fromTop
- * @return entry requested, or <code>null</code> if no such entry.
- *
- * @since 1.1.0
- */
- protected PendingTransaction getPendingEntryFromTop(int fromTop) {
- if (pendingTransactions != null && pendingTransactions.size() >= fromTop) {
- return (PendingTransaction) pendingTransactions.get(pendingTransactions.size()-fromTop);
- } else
- return null;
- }
-
- /**
- * Pop up the top entry from the pending transactions queue.
- * @param fromTop how many entries to pop from the pending transaction list.
- *
- *
- * @since 1.1.0
- */
- protected void popPendingEntry(int fromTop) {
- if (pendingTransactions != null)
- if (pendingTransactions.size() > fromTop) {
- while(fromTop-- >0)
- pendingTransactions.remove(pendingTransactions.size()-1);
- } else
- pendingTransactions.clear();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushToProxy(org.eclipse.jem.internal.proxy.core.IProxy)
- */
- protected void pushToProxy(IProxy proxy) {
- if (proxy == null || proxy.isBeanProxy())
- pushToProxy((IBeanProxy) proxy);
- else
- pushToExpressionProxy((ExpressionProxy) proxy);
- }
-
- private void pushToProxy(IBeanProxy proxy) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push proxy command is:
- // PushExpressionCommand(push to proxy) followed by:
- // ValueObject containing the rendered proxy.
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.PUSH_TO_PROXY_EXPRESSION_VALUE);
- if (proxy == null)
- workerValue.set();
- else
- ((IREMBeanProxy) proxy).renderBean(workerValue);
- connection.pushValueObject(workerValue);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#closeProxy()
- */
- protected void closeProxy() {
- if (!closed) {
- try {
- if (connection != null && connection.isConnected()) {
- try {
- connection.stopExpressionProcessing(getREMExpressionID());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e, Level.INFO);
- // Not throwing an illegal state here because we don't care, other than logging and not
- // returning the connection to the registry that there was an error on close.
- } finally {
- getREMRegistry().returnConnection(connection);
- }
- }
- } finally {
- closed = true;
- if (sentData)
- getREMBeanProxyFactory().stopTransaction(); // Resume proxy releases. We've sent data at least once.
- }
- }
- methodsCache = null;
- fieldsCache = null;
- beanTypeCache = null;
- pendingTransactions = null;
- connection = null;
- }
-
- private static final Object VOIDTYPE = new Object(); // A void type was sent in expression proxy resolution.
- private static final Object NOTRESOLVED = new Object(); // A not resolved type was sent in expression proxy resolution.
-
- /*
- * Get the sender to use for pulling the expression proxy resolutions.
- */
- private BeanProxyValueSender getExpressionProxiesSender() {
- return new BeanProxyValueSender(getREMBeanProxyFactory()) {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.BeanProxyValueSender#sendValue(org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void sendValue(ValueObject value) {
- if (value.getType() == Commands.FLAG) {
- switch (value.anInt) {
- case ExpressionCommands.EXPRESSIONPROXY_NOTRESOLVED:
- array[index++] = NOTRESOLVED;
- break;
- case ExpressionCommands.EXPRESSIONPROXY_VOIDTYPE:
- array[index++] = VOIDTYPE;
- break;
- default:
- // Shouldn't happen.
- break;
- }
- } else
- super.sendValue(value);
- }
- };
- }
-
- /*
- * Process the pulled expression proxy resolutions.
- */
- private void processpulledExpressionProxies(List expressionProxies, BeanProxyValueSender sender) {
-
- // It is expected that each entry will coorespond to the next non-null expression proxy and will be the bean proxy or one of the special
- // types.
- int len = expressionProxies.size();
- int j = 0;
- Object[] resolveds = sender.getArray();
- for (int i = 0; i < len; i++) {
- ExpressionProxy ep = (ExpressionProxy) expressionProxies.get(i);
- if (ep != null) {
- Object resolved = resolveds[j++];
- if (resolved == NOTRESOLVED)
- fireProxyNotResolved(ep);
- else if (resolved == VOIDTYPE)
- fireProxyVoid(ep);
- else
- fireProxyResolved(ep, (IBeanProxy) resolved);
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.Expression#pullProxyValue(int, java.util.List)
- */
- protected IBeanProxy pullProxyValue(int proxycount, List expressionProxies) throws ThrowableProxy, NoExpressionValueException {
- if (!haveSentData()) {
- markAllProxiesNotResolved(expressionProxies);
- return null; // We haven't pushed any commands, so there is nothing to do. Don't create a connection for this.
- }
- // If there are any pending transactions at this point in time, there is no need to send them. They would be do nothings anyway.
-
- boolean processedExpressionProxies = false;
- IREMExpressionConnection lclConnection = getConnection();
- markInTransaction(lclConnection);
- try {
- Commands.ValueObject proxyids = null;
- BeanProxyValueSender sender = null;
- if (proxycount > 0) {
- proxyids = createExpressionProxiesValueObject(proxycount, expressionProxies);
- sender = getExpressionProxiesSender();
- }
-
- lclConnection.pullValue(getREMExpressionID(), proxyids, sender);
- // If we got this far, then if there are proxies, we need to process these too.
- if (proxycount > 0)
- processpulledExpressionProxies(expressionProxies, sender);
- processedExpressionProxies =true;
- lclConnection.getFinalValue(workerValue); // Get the returned value.
- return getREMBeanProxyFactory().getBeanProxy(workerValue);
- } catch (CommandErrorException e) {
- try {
- if (e.getErrorCode() == ExpressionCommands.EXPRESSION_NOEXPRESSIONVALUE_EXCEPTION) {
- // Need to turn it into a Throwable.
- ThrowableProxy t = null;
- try {
- getREMBeanProxyFactory().getBeanProxy(e.getValue()); // This will cause a throw to occur, but we don't want it going out, we want to capture it.
- } catch (ThrowableProxy e1) {
- t = e1;
- }
- throw new REMNoExpressionValueException(t);
- }
- getREMBeanProxyFactory().processErrorReturn(e);
- } catch (CommandException e1) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- if (!e.isRecoverable()) {
- lclConnection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- if (!e.isRecoverable()) {
- lclConnection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- } finally {
- markEndTransaction(lclConnection);
- if (!processedExpressionProxies)
- markAllProxiesNotResolved(expressionProxies); // We failed before we could process the expression proxies. So mark all as not resolved.
- }
- return null;
- }
-
- /**
- * This is called by commands that write some data and will be reading data back immediately
- * (i.e. pull value and invoke expression). If we are on a callback thread and have the
- * used the connection from the callback thread, we need to tell the callback thread that
- * it is in a transaction. This is needed because while reading data back there are
- * sometimes calls back to the vm to get beantype data for new classes. This would
- * normally be through a new connection so that it doesn't get stuck in the middle of the
- * data being sent back. But when running on a callback the same connection is used. So it
- * would stick data in the middle of the return stream of data. To prevent this we need
- * to tell the callback thread that it is in a transaction during this call so that any
- * such new connection requests will get a new connection.
- * <p>
- * This is not nestable (i.e. the first markEndTransaction will set it false, even if several nested
- * markInTransactions are called).
- * <p>
- * markEndTransaction must be called in ALL cases, such use try/finally.
- * @param remConnection the connection to see check against and mark in transaction for.
- *
- *
- * @since 1.1.0
- */
- protected void markInTransaction(IREMExpressionConnection remConnection) {
- Thread thread = Thread.currentThread();
- if (thread instanceof REMCallbackThread) {
- // We are in a callback, and the callback connection is our connection, tell the callback that it is in transaction.
- REMCallbackThread callbackThread = (REMCallbackThread) thread;
- if (callbackThread.getConnection() == remConnection) {
- callbackThread.setIntransaction(true);
- }
- }
- }
-
- /**
- * Mark end of transaction.
- * @param remConn REMConnection to test and mark not in connection for.
- *
- * @see REMExpression#markInTransaction(IREMExpressionConnection)
- * @since 1.1.0
- */
- protected void markEndTransaction(IREMExpressionConnection remConn) {
- Thread thread = Thread.currentThread();
- if (thread instanceof REMCallbackThread) {
- // We are in a callback, and the callback connection is our connection, tell the callback that it is in transaction.
- REMCallbackThread callbackThread = (REMCallbackThread) thread;
- if (callbackThread.getConnection() == remConn) {
- callbackThread.setIntransaction(false);
- }
- }
- }
-
- /**
- * @param expressionProxies
- *
- * @since 1.1.0
- */
- private Commands.ValueObject createExpressionProxiesValueObject(int actualCount, List expressionProxies) {
- class ExpressionProxyRetriever implements Commands.ValueRetrieve {
- Iterator expressionProxiesItr;
- Commands.ValueObject worker = new Commands.ValueObject();
-
- public ExpressionProxyRetriever(List expressionProxies) {
- this.expressionProxiesItr = expressionProxies.iterator();
- }
-
- public Commands.ValueObject nextValue() {
- worker.set(-1);
- while (expressionProxiesItr.hasNext()) {
- Object parm = expressionProxiesItr.next();
- if (parm != null) {
- worker.set(((ExpressionProxy) parm).getProxyID());
- break;
- }
- }
- return worker;
- }
- };
-
- workerValue.setArrayIDS(new ExpressionProxyRetriever(expressionProxies), actualCount, Commands.INT);
- return workerValue;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushCastToProxy(org.eclipse.jem.internal.proxy.core.IProxyBeanType)
- */
- protected void pushCastToProxy(IProxyBeanType type) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push cast to proxy command is:
- // PushExpressionCommand(push cast to proxy) followed by:
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.CAST_EXPRESSION_VALUE);
- fillProxy(type, workerValue);
- connection.pushValueObject(workerValue);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /**
- * Push the proxy bean type in the format depending on expression proxy or beantype proxy.
- * @param type
- * @throws IOException
- *
- * @since 1.1.0
- */
- protected void fillProxy(IProxy type, Commands.ValueObject value) throws IOException {
- // ValueObject containing the rendered bean type proxy if IBeanTypeProxy or int (for expression proxy id) if expression proxy.
- if (type.isBeanProxy()) {
- ((IREMBeanProxy) type).renderBean(value);
- } else {
- ExpressionProxy ep = (ExpressionProxy) type;
- value.set(ep.getProxyID());
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushInstanceofToProxy(org.eclipse.jem.internal.proxy.core.IProxyBeanType)
- */
- protected void pushInstanceofToProxy(IProxyBeanType type) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push instanceof to proxy command is:
- // PushExpressionCommand(push instanceof to proxy) followed by:
- // ValueObject containing the rendered bean type proxy or the String representing the name of class.
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.INSTANCEOF_EXPRESSION_VALUE);
- fillProxy(type, workerValue);
- connection.pushValueObject(workerValue);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushInfixToProxy(org.eclipse.jem.internal.proxy.initParser.tree.InfixOperator, int)
- */
- protected void pushInfixToProxy(InfixOperator operator, InternalInfixOperandType operandType) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push infix to proxy command is:
- // PushExpressionCommand(push infix to proxy) followed by:
- // byte: operator
- // byte: operandType
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.INFIX_EXPRESSION_VALUE);
- connection.pushByte((byte) operator.getValue());
- connection.pushByte((byte) operandType.getValue());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushPrefixToProxy(org.eclipse.jem.internal.proxy.initParser.tree.PrefixOperator)
- */
- protected void pushPrefixToProxy(PrefixOperator operator) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push prefix to proxy command is:
- // PushExpressionCommand(push prefix to proxy) followed by:
- // byte: operator
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.PREFIX_EXPRESSION_VALUE);
- connection.pushByte((byte) operator.getValue());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushArrayAccessToProxy(int)
- */
- protected void pushArrayAccessToProxy(int indexCount) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push array access to proxy command is:
- // PushExpressionCommand(push array acces to proxy) followed by:
- // int: indexCount
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.ARRAY_ACCESS_EXPRESSION_VALUE);
- connection.pushInt(indexCount);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushArrayCreationToProxy(org.eclipse.jem.internal.proxy.core.IProxyBeanType, int)
- */
- protected void pushArrayCreationToProxy(IProxyBeanType type, int dimensionCount) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push array creation to proxy command is:
- // PushExpressionCommand(push array creation to proxy) followed by:
- // ValueObject containing the rendered bean type proxy or the expression proxy.
- // int: dimension count
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.ARRAY_CREATION_EXPRESSION_VALUE);
- fillProxy(type, workerValue);
- connection.pushValueObject(workerValue);
- connection.pushInt(dimensionCount);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- protected void pushArrayInitializerToProxy(IProxyBeanType type, int stripCount, int expressionCount) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push array initializer to proxy command is:
- // PushExpressionCommand(push array initializer to proxy) followed by:
- // ValueObject containing the rendered bean type proxy or expression proxy.
- // int: strip count
- // int: expression count
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.ARRAY_INITIALIZER_EXPRESSION_VALUE);
- fillProxy(type, workerValue);
- connection.pushValueObject(workerValue);
- connection.pushInt(stripCount);
- connection.pushInt(expressionCount);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushClassInstanceCreationToProxy(org.eclipse.jem.internal.proxy.core.IProxyBeanType, int)
- */
- protected void pushClassInstanceCreationToProxy(IProxyBeanType type, int argumentCount) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push class instance creation to proxy command is:
- // PushExpressionCommand(push class instance creation to proxy) followed by:
- // ValueObject containing the rendered bean type proxy or the expression proxy
- // int: argument count
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.CLASS_INSTANCE_CREATION_EXPRESSION_VALUE);
- fillProxy(type, workerValue);
- connection.pushValueObject(workerValue);
- connection.pushInt(argumentCount);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushTypeReceiverToProxy(org.eclipse.jem.internal.proxy.core.IProxyBeanType)
- */
- protected void pushTypeReceiverToProxy(IProxyBeanType type) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push type receiver to proxy command is:
- // PushExpressionCommand(push type receiver to proxy) followed by:
- // ValueObject containing the rendered bean type proxy or the expression proxy.
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.TYPERECEIVER_EXPRESSION_VALUE);
- fillProxy(type, workerValue);
- connection.pushValueObject(workerValue);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushFieldAccessToProxy(java.lang.String, boolean)
- */
- protected void pushFieldAccessToProxy(Object field, boolean hasReceiver) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push field access to proxy command is:
- // PushExpressionCommand(push field access to proxy) followed by:
- // Commands.Value: fieldName or IProxyField
- // boolean: hasReceiver
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.FIELD_ACCESS_EXPRESSION_VALUE);
- if (field instanceof String) {
- workerValue.set((String) field);
- } else {
- fillProxy((IProxy) field, workerValue);
- }
- connection.pushValueObject(workerValue);
- connection.pushBoolean(hasReceiver);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushMethodInvocationToProxy(java.lang.String, boolean, int)
- */
- protected void pushMethodInvocationToProxy(Object method, boolean hasReceiver, int argCount) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push method invocation to proxy command is:
- // PushExpressionCommand(push method invocation to proxy) followed by:
- // Commands.ValueObject: methodName or IMethodProxy
- // boolean: hasReceiver
- // int: argCount
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.METHOD_EXPRESSION_VALUE);
- if (method instanceof String) {
- workerValue.set((String) method);
- } else {
- fillProxy((IProxy) method, workerValue);
- }
- connection.pushValueObject(workerValue);
- connection.pushBoolean(hasReceiver);
- connection.pushInt(argCount);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushConditionalToProxy(int)
- */
- protected void pushConditionalToProxy(InternalConditionalOperandType expressionType) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push conditional to proxy command is:
- // PushExpressionCommand(push conditional to proxy) followed by:
- // byte: expression type
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.CONDITIONAL_EXPRESSION_VALUE);
- connection.pushByte((byte) expressionType.getValue());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /*
- * A special one that takes the ThrowableProxy for no expression value and
- * wrappers it prints its stack trace instead, but still makes it a subclass
- * of NoExpressionValueException.
- *
- * @since 1.1.0
- */
- private static class REMNoExpressionValueException extends NoExpressionValueException {
- /**
- * Comment for <code>serialVersionUID</code>
- *
- * @since 1.1.0
- */
- private static final long serialVersionUID = 1692406777391812694L;
-
-
- public REMNoExpressionValueException(ThrowableProxy e) {
- super(e);
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Throwable#getLocalizedMessage()
- */
- public String getLocalizedMessage() {
- return ((ThrowableProxy) getCause()).getProxyLocalizedMessage();
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Throwable#getMessage()
- */
- public String getMessage() {
- return ((ThrowableProxy) getCause()).getProxyMessage();
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Throwable#printStackTrace()
- */
- public void printStackTrace() {
- getCause().printStackTrace();
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
- */
- public void printStackTrace(PrintStream s) {
- getCause().printStackTrace(s);
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
- */
- public void printStackTrace(PrintWriter s) {
- getCause().printStackTrace(s);
- }
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushInvoke(int, java.util.List)
- */
- protected void pushInvoke(int proxycount, List expressionProxies) throws ThrowableProxy, NoExpressionValueException {
- if (!haveSentData()) {
- markAllProxiesNotResolved(expressionProxies);
- return; // We haven't pushed any commands, so there is nothing to do. Don't create a connection for this.
- }
- // If at this point there are pending transactions, there is no need to send them because they would all be do-nothings.
-
- boolean processedExpressionProxies = false;
- IREMExpressionConnection lclConnection = getConnection();
- markInTransaction(lclConnection);
- try {
- Commands.ValueObject proxyids = null;
- BeanProxyValueSender sender = null;
- if (proxycount > 0) {
- proxyids = createExpressionProxiesValueObject(proxycount, expressionProxies);
- sender = getExpressionProxiesSender();
- }
-
- lclConnection.sync(getREMExpressionID(), proxyids, sender);
-
- // If we got this far, then if there are proxies, we need to process these too.
- if (proxycount > 0)
- processpulledExpressionProxies(expressionProxies, sender);
- processedExpressionProxies = true;
- lclConnection.getFinalValue(workerValue); // We don't care what it is, we just need to see if there is an error.
- } catch (CommandErrorException e) {
- try {
- if (e.getErrorCode() == ExpressionCommands.EXPRESSION_NOEXPRESSIONVALUE_EXCEPTION) {
- // Need to turn it into a Throwable.
- ThrowableProxy t = null;
- try {
- getREMBeanProxyFactory().getBeanProxy(e.getValue()); // This will cause a throw to occur, but we don't want it going out, we want to capture it.
- } catch (ThrowableProxy e1) {
- t = e1;
- }
- throw new REMNoExpressionValueException(t);
- }
- getREMBeanProxyFactory().processErrorReturn(e);
- } catch (CommandException e1) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- if (!e.isRecoverable()) {
- lclConnection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- if (!e.isRecoverable()) {
- lclConnection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- } finally {
- markEndTransaction(lclConnection);
- if (!processedExpressionProxies)
- markAllProxiesNotResolved(expressionProxies); // We failed before we could process the expression proxies. So mark all as not resolved.
- }
- }
-
- private static class REMBeanTypeExpressionProxy extends ExpressionProxy implements IBeanTypeExpressionProxy {
-
- private String typeName;
-
- /**
- * @param proxyid
- *
- * @since 1.1.0
- */
- private REMBeanTypeExpressionProxy(int proxyid, Expression expression) {
- super(proxyid, BEANTYPE_EXPRESSION_PROXY, expression);
- }
-
- public void setTypeName(String typeName) {
- this.typeName = typeName;
- }
-
- public String getTypeName() {
- return typeName;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.ExpressionProxy#toString()
- */
- public String toString() {
- return super.toString()+" - "+getTypeName(); //$NON-NLS-1$
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getMethodProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, org.eclipse.jem.internal.proxy.core.IProxyBeanType[])
- */
- public IProxyMethod getMethodProxy(IExpression expression, String methodName, IProxyBeanType[] parameterTypes) {
- REMProxyFactoryRegistry registry = (REMProxyFactoryRegistry) expression.getRegistry();
- return ((REMMethodProxyFactory) registry.getMethodProxyFactory()).getMethodProxy(expression, this, methodName, parameterTypes);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getMethodProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, java.lang.String[])
- */
- public IProxyMethod getMethodProxy(IExpression expression, String methodName, String[] parameterTypes) {
- REMProxyFactoryRegistry registry = (REMProxyFactoryRegistry) expression.getRegistry();
- return ((REMMethodProxyFactory) registry.getMethodProxyFactory()).getMethodProxy(expression, this, methodName, parameterTypes);
- }
-
- public IProxyMethod getMethodProxy(IExpression expression, String methodName) {
- return getMethodProxy(expression, methodName, (IProxyBeanType[]) null);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getFieldProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String)
- */
- public IProxyField getFieldProxy(IExpression expression, String fieldName) {
- REMProxyFactoryRegistry registry = (REMProxyFactoryRegistry) expression.getRegistry();
- return ((REMMethodProxyFactory) registry.getMethodProxyFactory()).getFieldProxy(expression, this, fieldName);
- }
- }
-
- private static class REMMethodExpressionProxy extends ExpressionProxy implements IProxyMethod {
-
- /**
- * @param proxyid
- * @param proxyType
- * @param expression
- *
- * @since 1.1.0
- */
- private REMMethodExpressionProxy(int proxyid, Expression expression) {
- super(proxyid, METHOD_EXPRESSION_PROXY, expression);
- }
- }
-
- private static class REMFieldExpressionProxy extends ExpressionProxy implements IProxyField {
-
- /**
- * @param proxyid
- * @param proxyType
- * @param expression
- *
- * @since 1.1.0
- */
- private REMFieldExpressionProxy(int proxyid, Expression expression) {
- super(proxyid, FIELD_EXPRESSION_PROXY, expression);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#createExpressionProxy(int)
- */
- protected ExpressionProxy createExpressionProxy(int proxyType, int proxyID) {
- switch (proxyType) {
- case NORMAL_EXPRESSION_PROXY:
- default:
- return new ExpressionProxy(proxyID, NORMAL_EXPRESSION_PROXY, this);
-
- case BEANTYPE_EXPRESSION_PROXY:
- return new REMBeanTypeExpressionProxy(proxyID, this);
-
- case METHOD_EXPRESSION_PROXY:
- return new REMMethodExpressionProxy(proxyID, this);
-
- case FIELD_EXPRESSION_PROXY:
- return new REMFieldExpressionProxy(proxyID, this);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushAssignmentToProxy(org.eclipse.jem.internal.proxy.core.ExpressionProxy)
- */
- protected void pushAssignmentToProxy(ExpressionProxy proxy) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push assignment to proxy command is:
- // PushExpressionCommand(push assignment to proxy) followed by:
- // int: proxy id
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.ASSIGNMENT_PROXY_EXPRESSION_VALUE);
- connection.pushInt(proxy.getProxyID());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushAssignmentToProxy()
- */
- protected void pushAssignmentToProxy() {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of the push assignment command is:
- // PushAssignmentCommand.
- connection.pushExpressionCommand(getREMExpressionID(), (byte) InternalExpressionTypes.ASSIGNMENT_EXPRESSION_VALUE);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
-
- private void pushToExpressionProxy(ExpressionProxy proxy) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to expression proxy command is:
- // PushExpressionCommand(push expression proxy to proxy) followed by:
- // int: proxy id
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.PUSH_TO_EXPRESSION_PROXY_EXPRESSION_VALUE);
- connection.pushInt(proxy.getProxyID());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
-
- }
-
- private static class BlockBegin extends PendingTransaction {
- public int blockNumber;
-
- public BlockBegin(int blockNumber) {
- this.blockNumber = blockNumber;
- }
-
- public void pushTransaction(REMExpression remExpression) {
- IREMExpressionConnection connection = remExpression.getConnection();
- try {
- // Format of push to block begin proxy command is:
- // PushExpressionCommand(push block begin proxy to proxy) followed by:
- // int: block id
- connection.pushExpressionCommand(remExpression.getREMExpressionID(), (byte)InternalExpressionTypes.BLOCK_BEGIN_EXPRESSION_VALUE);
- connection.pushInt(blockNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- remExpression.throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushBlockBeginToProxy(int)
- */
- protected void pushBlockBeginToProxy(int blockNumber) {
- addPendingTransaction(new BlockBegin(blockNumber));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushBlockEndToProxy(int)
- */
- protected void pushBlockEndToProxy(int blockNumber) {
- // See if the top pending transactions is BreakBlock(blockNumber). If it is then the BreakBlock can be thrown away.
- PendingTransaction topEntry = getPendingEntryFromTop(1);
- if (topEntry instanceof BlockBreak && ((BlockBreak) topEntry).blockNumber == blockNumber) {
- popPendingEntry(1);
- topEntry = getPendingEntryFromTop(1);
- }
- // See if the top pending transaction is now BeginBlock(blockNumber). If it is, then this transaction and the block begin
- // can be thrown away because they are an empty block.
- if (topEntry instanceof BlockBegin && ((BlockBegin) topEntry).blockNumber == blockNumber) {
- popPendingEntry(1);
- return;
- }
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to block end proxy command is:
- // PushExpressionCommand(push block end proxy to proxy) followed by:
- // int: block id
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.BLOCK_END_EXPRESSION_VALUE);
- connection.pushInt(blockNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- private static class BlockBreak extends PendingTransaction {
- public int blockNumber;
-
- public BlockBreak(int blockNumber) {
- this.blockNumber = blockNumber;
- }
-
- public void pushTransaction(REMExpression remExpression) {
- IREMExpressionConnection connection = remExpression.getConnection();
- try {
- // Format of push to block break proxy command is:
- // PushExpressionCommand(push block break proxy to proxy) followed by:
- // int: block id
- connection.pushExpressionCommand(remExpression.getREMExpressionID(), (byte)InternalExpressionTypes.BLOCK_BREAK_EXPRESSION_VALUE);
- connection.pushInt(blockNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- remExpression.throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushBlockBreakToProxy(int)
- */
- protected void pushBlockBreakToProxy(int blockNumber) {
- // Even if there is no pending block begin for this block, we will pend the break.
- // This is so that if the break occurred just before the block end, then it can be ignored.
- addPendingTransaction(new BlockBreak(blockNumber));
- }
-
- private static class TryBegin extends PendingTransaction {
-
- public final int tryNumber;
-
- public TryBegin(int tryNumber) {
- this.tryNumber = tryNumber;
-
- }
- public void pushTransaction(REMExpression remExpression) {
- IREMExpressionConnection connection = remExpression.getConnection();
- try {
- // Format of push to try begin proxy command is:
- // PushExpressionCommand(push try begin to proxy) followed by:
- // int: try id
- connection.pushExpressionCommand(remExpression.getREMExpressionID(), (byte)InternalExpressionTypes.TRY_BEGIN_EXPRESSION_VALUE);
- connection.pushInt(tryNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- remExpression.throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushTryBeginToProxy(int)
- */
- protected void pushTryBeginToProxy(int tryNumber) {
- addPendingTransaction(new TryBegin(tryNumber));
- }
-
- private static class TryCatch extends PendingTransaction {
-
- public final int tryNumber;
- private final IProxyBeanType exceptionType;
- private final ExpressionProxy ep;
-
- public TryCatch(int tryNumber, IProxyBeanType exceptionType, ExpressionProxy ep) {
- this.tryNumber = tryNumber;
- this.exceptionType = exceptionType;
- this.ep = ep;
- }
-
- public void pushTransaction(REMExpression remExpression) {
- IREMExpressionConnection connection = remExpression.getConnection();
- try {
- // Format of push to try begin proxy command is:
- // PushExpressionCommand(push try begin to proxy) followed by:
- // int: try id
- // object: expression type (as beantype or as expression proxy)
- // int: proxy id or (-1 if null).
- connection.pushExpressionCommand(remExpression.getREMExpressionID(), (byte)InternalExpressionTypes.TRY_CATCH_EXPRESSION_VALUE);
- connection.pushInt(tryNumber);
- remExpression.fillProxy(exceptionType, remExpression.workerValue);
- connection.pushValueObject(remExpression.workerValue);
- if (ep != null)
- connection.pushInt(ep.getProxyID());
- else
- connection.pushInt(-1);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- remExpression.throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- remExpression.throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- }
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushTryCatchClauseToProxy(int, org.eclipse.jem.internal.proxy.core.IProxyBeanType, org.eclipse.jem.internal.proxy.core.ExpressionProxy)
- */
- protected void pushTryCatchClauseToProxy(int tryNumber, IProxyBeanType exceptionType, ExpressionProxy ep) {
- addPendingTransaction(new TryCatch(tryNumber, exceptionType, ep));
- }
-
- private static class TryFinally extends PendingTransaction {
-
- public final int tryNumber;
-
- public TryFinally(int tryNumber) {
- this.tryNumber = tryNumber;
-
- }
-
- public void pushTransaction(REMExpression remExpression) {
- IREMExpressionConnection connection = remExpression.getConnection();
- try {
- // Format of push to try begin proxy command is:
- // PushExpressionCommand(push try finally to proxy) followed by:
- // int: try id
- connection.pushExpressionCommand(remExpression.getREMExpressionID(), (byte)InternalExpressionTypes.TRY_FINALLY_EXPRESSION_VALUE);
- connection.pushInt(tryNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- remExpression.throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushTryFinallyClauseToProxy(int)
- */
- protected void pushTryFinallyClauseToProxy(int tryNumber) {
- addPendingTransaction(new TryFinally(tryNumber));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushTryEndToProxy(int)
- */
- protected void pushTryEndToProxy(int tryNumber) {
- // This is a little tricky. We need to find if there is nothing but try/catch/finally for this tryNumber on the pending
- // transactions up to the try begin, if there is nothing else, then we can throw the entire try away. That
- // means there was no code at all in any of the try/catch/finally blocks.
- int fromTop = 0;
- while (true) {
- PendingTransaction topEntry = getPendingEntryFromTop(++fromTop);
- if (topEntry instanceof TryFinally) {
- if (((TryFinally) topEntry).tryNumber != tryNumber)
- break; // We met a finally that wasn't ours, so entire try group must be sent.
- } else if (topEntry instanceof TryCatch) {
- if (((TryCatch) topEntry).tryNumber != tryNumber)
- break; // We met a catch that wasn't ours, so entire try group must be sent.
- } else if (topEntry instanceof TryBegin) {
- if (((TryBegin) topEntry).tryNumber == tryNumber) {
- // We've met our try begin, and nothing but empty catch/finally in between, so the entire group can be thrown away
- popPendingEntry(fromTop);
- return;
- } else
- break; // We've hit a try begin that wasn't ours, so the entire try group must be sent.
- } else
- break; // We've hit something other than our try group, so process everything.
- }
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to try begin proxy command is:
- // PushExpressionCommand(push try end to proxy) followed by:
- // int: try id
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.TRY_END_EXPRESSION_VALUE);
- connection.pushInt(tryNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushThrowToProxy()
- */
- protected void pushThrowToProxy() {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to try begin proxy command is:
- // PushExpressionCommand(push throw to proxy)
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.THROW_EXPRESSION_VALUE);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushRethrowToProxy(int)
- */
- protected void pushRethrowToProxy(int tryNumber) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to rethow proxy command is:
- // PushExpressionCommand(push rethrow to proxy)
- // int: try id
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.RETHROW_EXPRESSION_VALUE);
- connection.pushInt(tryNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushBeanTypeToProxy(org.eclipse.jem.internal.proxy.core.IBeanTypeExpressionProxy)
- */
- protected void pushBeanTypeToProxy(IBeanTypeExpressionProxy proxy) {
- // Push beantype to proxy is sent out of sequence without respect to where in expression we are,
- // so no need to handle pending transactions at this point. They would not affect the result
- // of this call.
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to beanType proxy command is:
- // PushExpressionCommand(push bean type expression proxy)
- // int: proxy id
- // string: typename
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.PUSH_BEANTYPE_EXPRESSIONPROXY_EXPRESSION_VALUE);
- REMBeanTypeExpressionProxy ep = (REMBeanTypeExpressionProxy) proxy;
- connection.pushInt(ep.getProxyID());
- connection.pushString(ep.getTypeName());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushMethodToProxy(org.eclipse.jem.internal.proxy.core.ExpressionProxy, org.eclipse.jem.internal.proxy.core.IProxyBeanType, java.lang.String, org.eclipse.jem.internal.proxy.core.IProxyBeanType[])
- */
- protected void pushMethodToProxy(ExpressionProxy proxy, IProxyBeanType declaringType, String methodName, IProxyBeanType[] parameterTypes) {
- // Push method to proxy is sent out of sequence without respect to where in expression we are,
- // so no need to handle pending transactions at this point. They would not affect the result
- // of this call.
-
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to method proxy command is:
- // PushExpressionCommand(push method type expression proxy)
- // int: proxy id
- // ValueObject: containing the rendered bean type proxy or the expression proxy for the declaring type
- // string: method name
- // int: number of parameter types
- // ValueObject(s): containing the rendered bean type proxy or the expression proxy for the parameter types.
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.PUSH_METHOD_EXPRESSIONPROXY_EXPRESSION_VALUE);
- connection.pushInt(proxy.getProxyID());
- fillProxy(declaringType, workerValue);
- connection.pushValueObject(workerValue);
- connection.pushString(methodName);
- if (parameterTypes == null || parameterTypes.length == 0)
- connection.pushInt(0);
- else {
- connection.pushInt(parameterTypes.length);
- for (int i = 0; i < parameterTypes.length; i++) {
- fillProxy(parameterTypes[i], workerValue);
- connection.pushValueObject(workerValue);
- }
- }
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushFieldToProxy(org.eclipse.jem.internal.proxy.core.ExpressionProxy, org.eclipse.jem.internal.proxy.core.IProxyBeanType, java.lang.String)
- */
- protected void pushFieldToProxy(ExpressionProxy proxy, IProxyBeanType declaringType, String fieldName) {
- // Push field to proxy is sent out of sequence without respect to where in expression we are,
- // so no need to handle pending transactions at this point. They would not affect the result
- // of this call.
-
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to field proxy command is:
- // PushExpressionCommand(push field type expression proxy)
- // int: proxy id
- // ValueObject: containing the rendered bean type proxy or the expression proxy for the declaring type
- // string: field name
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.PUSH_FIELD_EXPRESSIONPROXY_EXPRESSION_VALUE);
- connection.pushInt(proxy.getProxyID());
- fillProxy(declaringType, workerValue);
- connection.pushValueObject(workerValue);
- connection.pushString(fieldName);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- /**
- * Get the map of IProxyMethods for a beantype. Meant to be used only in conjunction with REMProxyConstants.
- * It is here so the REMProxyConstants can store pending proxies per expression.
- *
- * @param beanType
- * @return
- *
- * @since 1.1.0
- */
- public Map getMethods(IProxyBeanType beanType) {
- if (methodsCache == null)
- methodsCache = new HashMap();
- Map methods = (Map) methodsCache.get(beanType.getTypeName());
- if(methods == null){
- methods = new HashMap(20);
- methodsCache.put(beanType.getTypeName(),methods);
- }
- return methods;
- }
-
- /**
- * Get the map of IProxyFields for a beantype. Meant to be used only in conjunction with REMProxyConstants.
- * It is here so the REMProxyConstants can store pending proxies per expression.
- *
- * @param beanType
- * @return
- *
- * @since 1.1.0
- */
- public Map getFields(IProxyBeanType beanType) {
- if (fieldsCache == null)
- fieldsCache = new HashMap();
- Map fields = (Map) fieldsCache.get(beanType.getTypeName());
- if(fields == null){
- fields = new HashMap(20);
- fieldsCache.put(beanType.getTypeName(),fields);
- }
- return fields;
- }
-
- /**
- * Get the map of IProxyBeanTypes for a beantype name. Meant to be used only in conjunction with REMSgtandardBeanTypeFactory.
- * It is here so the REMStandardBeanTypeFactory can store pending proxies per expression.
- *
- * @param beanType
- * @return
- *
- * @since 1.1.0
- */
- public IProxyBeanType getBeanType(String beanTypeName) {
- if (beanTypeCache == null)
- beanTypeCache = new HashMap();
- return (IProxyBeanType) beanTypeCache.get(beanTypeName);
- }
-
- /**
- * Add the beantype expression proxy to the map of bean type expression proxies. Used in conjunction with REMStandardBeanTypeFactory.
- * It is here so the REMStandardBeanTypeFactory can store pending proxies per expression.
- * @param beanTypeName
- * @param beantype
- *
- * @since 1.1.0
- */
- public void addBeanType(String beanTypeName, IProxyBeanType beantype) {
- beanTypeCache.put(beanTypeName, beantype);
- }
-
- /**
- * Remove the beantype expression proxy from the map. This is called because there was a rollback due to an endmark.
- * @param beanTypeName
- *
- * @since 1.1.0
- */
- public void removeBeanType(String beanTypeName) {
- beanTypeCache.remove(beanTypeName);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushIfTestToProxy()
- */
- protected void pushIfTestToProxy() {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push if test to proxy command is:
- // PushExpressionCommand(push if test to proxy)
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.IF_TEST_EXPRESSION_VALUE);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushIfElseToProxy(org.eclipse.jem.internal.proxy.initParser.tree.InternalIfElseOperandType)
- */
- protected void pushIfElseToProxy(InternalIfElseOperandType clauseType) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push conditional to proxy command is:
- // PushExpressionCommand(push if/else clause to proxy) followed by:
- // byte: clause type
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.IF_ELSE_EXPRESSION_VALUE);
- connection.pushByte((byte) clauseType.getValue());
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.Expression#pushNewInstanceToProxy(java.lang.String, org.eclipse.jem.internal.proxy.core.IProxyBeanType)
- */
- protected void pushNewInstanceToProxy(String initializationString, IProxyBeanType resultType) {
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push new instance from initstring to proxy command is:
- // PushExpressionCommand(push new instance to proxy) followed by:
- // string: init string
- // ValueObject: containing the rendered bean type proxy or the expression proxy for the declaring type
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.NEW_INSTANCE_VALUE);
- connection.pushString(initializationString);
- fillProxy(resultType, workerValue);
- connection.pushValueObject(workerValue);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- if (!e.isRecoverable()) {
- connection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- }
- }
-
- private static class Mark extends PendingTransaction {
- public int markID;
-
- public Mark(int markID) {
- this.markID = markID;
- }
-
- public void pushTransaction(REMExpression remExpression) {
- IREMExpressionConnection connection = remExpression.getConnection();
- try {
- // Format of push mark to proxy command is:
- // PushExpressionCommand(push mark to proxy) followed by:
- // int: markID
- connection.pushExpressionCommand(remExpression.getREMExpressionID(), (byte)InternalExpressionTypes.MARK_VALUE);
- connection.pushInt(markID);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- remExpression.throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- }
-
- protected void pushMarkToProxy(int markID) {
- addPendingTransaction(new Mark(markID));
- }
-
- protected void pushEndmarkToProxy(int markID, boolean restore) {
- // See if the top pending transaction is now Mark(markID). If it is, then this transaction and the mark begin
- // can be thrown away because they are an empty block.
- PendingTransaction topEntry = getPendingEntryFromTop(1);
- if (topEntry instanceof Mark && ((Mark) topEntry).markID == markID) {
- popPendingEntry(1);
- return;
- }
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push end mark to proxy command is:
- // PushExpressionCommand(push end mark to proxy) followed by:
- // int: markID
- // boolean: restore
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.ENDMARK_VALUE);
- connection.pushInt(markID);
- connection.pushBoolean(restore);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- // This is the expression processor controller used to transfer.
- // This is the guy that maintains continuity of the transaction as
- // it is passed from one connection to another.
- protected IBeanProxy expressionProcesserController;
- protected void pushBeginTransferThreadToProxy() throws ThrowableProxy {
- // If the controller is not null, that means we had already requested a transfer
- // but had not used it in this thread so there is no need to do anything. It
- // will be handled when switching back to the other thread.
- // If the connection is null, no need to do anything since there is no connection
- // to transfer.
- if (connection != null && expressionProcesserController == null) {
- IREMExpressionConnection lclConnection = getConnection();
- markInTransaction(lclConnection);
- try {
- workerValue.set();
- lclConnection.transferExpression(getREMExpressionID(), workerValue);
- expressionProcesserController = getREMBeanProxyFactory().getBeanProxy(workerValue);
- getREMRegistry().returnConnection(lclConnection);
- this.connection = null;
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(e);
- if (!e.isRecoverable()) {
- lclConnection.close();
- throwIllegalStateException(COMMAND_EXCEPTION_MSG);
- }
- } finally {
- markEndTransaction(lclConnection);
- }
- }
- }
-
- protected void pushTransferThreadToProxy() {
- // Don't need to do anything. The next time we need to push data across, we will get a connection and the getConnection()
- // will hook up the expression processor controller for us. This way if nothing happens in this thread then we won't
- // waste communication time on it.
- }
-
- private static class SubexpressionBegin extends PendingTransaction {
- public int subexpressionNumber;
-
- public SubexpressionBegin(int subexpressionNumber) {
- this.subexpressionNumber = subexpressionNumber;
- }
-
- public void pushTransaction(REMExpression remExpression) {
- IREMExpressionConnection connection = remExpression.getConnection();
- try {
- // Format of push to subexpression begin proxy command is:
- // PushExpressionCommand(push subexpression begin proxy to proxy) followed by:
- // int: subexpression id
- connection.pushExpressionCommand(remExpression.getREMExpressionID(), (byte)InternalExpressionTypes.SUBEXPRESSION_BEGIN_EXPRESSION_VALUE);
- connection.pushInt(subexpressionNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- remExpression.markInvalid(e.getLocalizedMessage());
- remExpression.throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-
- }
-
- protected void pushSubexpressionBeginToProxy(int subexpressionNumber) {
- addPendingTransaction(new SubexpressionBegin(subexpressionNumber));
- }
-
- protected void pushSubexpressionEndToProxy(int subexpressionNumber) {
- // See if the top pending transactions is SubexpressionBegin(subexpressionNumber). If it is then the SubexpressionBegin can be thrown away.
- PendingTransaction topEntry = getPendingEntryFromTop(1);
- if (topEntry instanceof SubexpressionBegin && ((SubexpressionBegin) topEntry).subexpressionNumber == subexpressionNumber) {
- popPendingEntry(1);
- return;
- }
- processPendingTransactions();
- IREMExpressionConnection connection = getConnection();
- try {
- // Format of push to block end proxy command is:
- // PushExpressionCommand(push subexpression end proxy to proxy) followed by:
- // int: subexpression id
- connection.pushExpressionCommand(getREMExpressionID(), (byte)InternalExpressionTypes.SUBEXPRESSION_END_EXPRESSION_VALUE);
- connection.pushInt(subexpressionNumber);
- } catch (IOException e) {
- connection.close();
- ProxyPlugin.getPlugin().getLogger().log(e);
- markInvalid(e.getLocalizedMessage());
- throwIllegalStateException(IO_EXCEPTION_MSG);
- }
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldProxy.java
deleted file mode 100644
index b99a5968a..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldProxy.java
+++ /dev/null
@@ -1,106 +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.remote;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-final class REMFieldProxy extends REMAccessibleObjectProxy implements IFieldProxy {
- private IBeanTypeProxy fFieldType;
-
- REMFieldProxy(REMProxyFactoryRegistry aRegistry, Integer anID) {
- super(aRegistry, anID);
- }
-
- /**
- * Return the type of the field.
- */
- public IBeanTypeProxy getFieldType() {
- if (fFieldType == null)
- fFieldType =
- (IBeanTypeProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetType().invokeCatchThrowableExceptions(
- this);
-
- return fFieldType;
- }
-
- /**
- * Release the proxy, i.e. mark it invalid.
- */
- public void release() {
- fFieldType = null;
- super.release();
- }
-
- /**
- * Get the value of this field from the subject
- */
- public IBeanProxy get(IBeanProxy subject) throws ThrowableProxy {
- // Format of getter parms is: (Object (subject)).
- // If the component type is primitive, we need to use the correct getter so that a valid value is returned,
- // if we just used the standard get, if the type was "int" the value returned would be an java.lang.Integer.
- IBeanTypeProxy fieldType = getFieldType();
- if (!fieldType.isPrimitive()) {
- // Use standard getter.
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGet()).invoke(this, subject);
- } else {
- // Use the correct primitive getter.
- int id = ((IREMBeanProxy) fieldType).getID().intValue();
- switch (id) {
- case Commands.BYTE_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetByte()).invoke(this, subject);
- case Commands.BOOLEAN_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetBoolean()).invoke(
- this,
- subject);
- case Commands.CHARACTER_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetChar()).invoke(this, subject);
- case Commands.DOUBLE_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetDouble()).invoke(
- this,
- subject);
- case Commands.FLOAT_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetFloat()).invoke(
- this,
- subject);
- case Commands.INTEGER_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetInt()).invoke(this, subject);
- case Commands.LONG_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetLong()).invoke(this, subject);
- case Commands.SHORT_TYPE :
- return ((IREMMethodProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getFieldGetShort()).invoke(
- this,
- subject);
- }
- }
-
- return null;
- }
-
- /**
- * Set the value of this field in this subject to this value.
- */
- public void set(IBeanProxy subject, IBeanProxy value) throws ThrowableProxy {
- REMStandardBeanProxyConstants.getConstants(fFactory).getFieldSet().invoke(this, new IBeanProxy[] { subject, value });
- }
-
- /**
- * The type proxy is constant proxy out of the method factory.
- */
- public IBeanTypeProxy getTypeProxy() {
- return ((REMMethodProxyFactory) fFactory.getMethodProxyFactory()).fieldType;
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldTypeProxy.java
deleted file mode 100644
index 06f6670ea..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFieldTypeProxy.java
+++ /dev/null
@@ -1,67 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * BeanType Proxy for Method class.
- */
-
-final class REMFieldTypeProxy extends REMAbstractBeanTypeProxy {
-
-REMFieldTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy accessibleTypeProxy) {
- super(aRegistry, new Integer(Commands.FIELD_CLASS), java.lang.reflect.Field.class.getName(), accessibleTypeProxy);
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the accessible object types, they are final classes, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Specialized from REMAbstractBeanTypeProxy to ensure Constructor proxies are created correctly.
- */
-public IREMBeanProxy newBeanProxy(Integer objectID) {
- return new REMFieldProxy(fRegistry, objectID);
-}
-
-/**
- * Note: Since new instances of Constructor are never done through a default ctor,
- * this function is not supported.
- */
-public IBeanProxy newInstance() {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Note: Since new instances of Constructor are never done through an initialization string,
- * this function is not supported.
- */
-public IBeanProxy newInstance(String initializationString) {
- throw new UnsupportedOperationException();
-}
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanProxy.java
deleted file mode 100644
index ab325e3f5..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanProxy.java
+++ /dev/null
@@ -1,44 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote proxy implementation of INumberBeanProxy for Float.class
- */
-class REMFloatClassBeanProxy extends REMNumberBeanProxy {
-
-REMFloatClassBeanProxy(REMProxyFactoryRegistry aRegistry, Float aFloat) {
- super(aRegistry, aFloat);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).floatClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set((Float) numberValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanTypeProxy.java
deleted file mode 100644
index da271beec..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatClassBeanTypeProxy.java
+++ /dev/null
@@ -1,74 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypePRoxy for Float.class
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMFloatClassBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMFloatClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.FLOAT_CLASS), Float.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMFloatClassBeanProxy(aRegistry, new Float(0F));
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createFloatBeanProxy(Float aFloat) {
- return (aFloat.floatValue() != 0F) ?
- new REMFloatClassBeanProxy(fRegistry, aFloat) : zeroProxy;
-}
-
-/**
- * Generic way to create an Float proxy, however, the Number must be a Float.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createFloatBeanProxy((Float) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createFloatBeanProxy(new Float(value.aFloat));
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanProxy.java
deleted file mode 100644
index 67fab4107..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanProxy.java
+++ /dev/null
@@ -1,131 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote Implementation of INumberBeanProxy for the primitive "float".
- * It can answer all of the primitive number types (int, long, short, byte, double, float).
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-class REMFloatTypeBeanProxy extends REMConstantBeanProxy implements INumberBeanProxy {
- private final float fFloat;
-
-/**
- * It is package protected because they are created
- * in a special way and no one else should create them.
- * @param aBean java.lang.Object
- */
-REMFloatTypeBeanProxy(REMProxyFactoryRegistry aRegistry, float aFloat) {
- super(aRegistry);
- fFloat = aFloat;
-}
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMFloatTypeBeanProxy)
- return fFloat == ((REMFloatTypeBeanProxy) anObject).floatValue();
- if (anObject instanceof Double)
- return fFloat == ((Float) anObject).floatValue();
- return false;
-}
-
-/* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
-public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMFloatTypeBeanProxy)
- return fFloat == ((REMFloatTypeBeanProxy) aBeanProxy).floatValue();
- return false;
-}
-/**
- * byteValue method comment.
- */
-public byte byteValue() {
- return (byte) fFloat;
-}
-/**
- * doubleValue method comment.
- */
-public double doubleValue() {
- return fFloat;
-}
-/**
- * floatValue method comment.
- */
-public float floatValue() {
- return fFloat;
-}
-/**
- * Return the int value
- */
-public int intValue() {
- return (int) fFloat;
-}
-/**
- * longValue method comment.
- */
-public long longValue() {
- return (long) fFloat;
-}
-/**
- * numberValue method comment.
- */
-public Number numberValue() {
- return new Float(fFloat);
-}
-/**
- * shortValue method comment.
- */
-public short shortValue() {
- return (short) fFloat;
-}
-
-/**
- * The bean's toString.
- */
-public String toBeanString() {
- return String.valueOf(fFloat);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).floatType;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fFloat);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanTypeProxy.java
deleted file mode 100644
index edc7eb193..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMFloatTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,98 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Float.TYPE.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMFloatTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMFloatTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.FLOAT_TYPE), Float.TYPE.getName());
-
- // Create the cached values
- zeroProxy = new REMFloatTypeBeanProxy(aRegistry, 0F);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createFloatBeanProxy(float aFloat) {
- return (aFloat != 0F) ?
- new REMFloatTypeBeanProxy(fRegistry, aFloat) : zeroProxy;
-}
-
-/**
- * newInstance method. float is a primitive, so the standard way won't work.
- * Return the zeroProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createFloatBeanProxy(value.aFloat);
-}
-
-/**
- * Short cut for newInstance where the string follows the
- * specific pattern we expect. That way it won't be necessary to ship over to the vm
- * to process it.
- *
- * The pattern it can accept is:
- * 1) (float) validNumber - number can be any number because (float) explicitly casts it down.
- * 2) validNumber
- * It will use the decode function of float to determine the valid number.
- */
-public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- String trim = initializationString.trim();
- if (trim.length() == 0)
- return super.newInstance(initializationString);
- float aFloat;
- if (trim.startsWith("(float)")) { //$NON-NLS-1$
- Number v = parseString(trim.substring("(float)".length()).trim()); //$NON-NLS-1$
- if (v != null)
- aFloat = v.floatValue();
- else
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- } else {
- try {
- aFloat = Float.valueOf(initializationString).floatValue(); // See if valid float format.
- } catch (NumberFormatException e) {
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- }
- }
-
- return getProxyFactoryRegistry().getBeanProxyFactory().createBeanProxyWith(aFloat);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInitErrorBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInitErrorBeanTypeProxy.java
deleted file mode 100644
index d70efd2fd..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInitErrorBeanTypeProxy.java
+++ /dev/null
@@ -1,469 +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.remote;
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * A special bean type proxy. It is for those bean types that had an instantiation error while being initialized. It is so we have the message. All
- * other actions against it will fail.
- *
- * @author richkulp
- */
-public class REMInitErrorBeanTypeProxy implements IREMBeanTypeProxy {
-
- protected final String initializationError;
-
- protected final REMProxyFactoryRegistry registry;
-
- protected final String classname;
-
- /**
- * Constructor for REMInitErrorBeanTypeProxy.
- */
- public REMInitErrorBeanTypeProxy(REMProxyFactoryRegistry registry, String initializationError, String classname) {
- super();
- this.registry = registry;
- this.initializationError = initializationError;
- this.classname = classname;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanTypeProxy#newBeanProxy(java.lang.Integer)
- */
- public IREMBeanProxy newBeanProxy(Integer anID) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanTypeProxy#newBeanTypeForClass(java.lang.Integer, java.lang.String, boolean)
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(java.lang.String[])
- */
- public IConstructorProxy getConstructorProxy(String[] argumentClassNames) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- return null;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IConstructorProxy[] getConstructors() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(java.lang.String[])
- */
- public IConstructorProxy getDeclaredConstructorProxy(String[] argumentClassNames) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructorProxy(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getDeclaredConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- return null;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IConstructorProxy[] getDeclaredConstructors() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IFieldProxy[] getFields() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IFieldProxy[] getDeclaredFields() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getFieldProxy(java.lang.String)
- */
- public IFieldProxy getFieldProxy(String fieldName) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getDeclaredFieldProxy(java.lang.String)
- */
- public IFieldProxy getDeclaredFieldProxy(String fieldName) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IMethodProxy[] getMethods() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- */
- public IMethodProxy[] getDeclaredMethods() {
- return null;
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String)
- */
- public IMethodProxy getMethodProxy(String methodName) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, java.lang.String[])
- */
- public IMethodProxy getMethodProxy(String methodName, String[] argumentClassNames) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, java.lang.String)
- */
- public IMethodProxy getMethodProxy(String methodName, String argumentClassName) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getMethodProxy(String methodName, IBeanTypeProxy[] argumentTypes) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getDeclaredMethodProxy(String methodName, IBeanTypeProxy[] argumentTypes) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getMethodProxy(java.lang.String, java.lang.String[])
- */
- public IMethodProxy getDeclaredMethodProxy(String methodName, String[] argumentClassNames) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getNullConstructorProxy()
- */
- public IConstructorProxy getNullConstructorProxy() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#getProxyFactoryRegistry()
- */
- public ProxyFactoryRegistry getProxyFactoryRegistry() {
- return registry;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getSuperBeanTypeProxy()
- */
- public IBeanTypeProxy getSuperBeanTypeProxy() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getTypeName()
- */
- public String getTypeName() {
- return classname;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getFormalTypeName()
- */
- public String getFormalTypeName() {
- return getTypeName();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isArray()
- */
- public boolean isArray() {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isInterface()
- */
- public boolean isInterface() {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isPrimitive()
- */
- public boolean isPrimitive() {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#isKindOf(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy)
- */
- public boolean isKindOf(IBeanTypeProxy aBeanProxyType) {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#newInstance()
- */
- public IBeanProxy newInstance() throws ThrowableProxy {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#newInstance(java.lang.String)
- */
- public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInitializationError()
- */
- public String getInitializationError() {
- return initializationError;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanProxy#getID()
- */
- public Integer getID() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanProxy#release()
- */
- public void release() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanProxy#renderBean(org.eclipse.jem.internal.proxy.common.remote.Commands.ValueObject)
- */
- public void renderBean(Commands.ValueObject renderInto) {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#getTypeProxy()
- */
- public IBeanTypeProxy getTypeProxy() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#toBeanString()
- */
- public String toBeanString() {
- return ""; //$NON-NLS-1$
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#isValid()
- */
- public boolean isValid() {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
- public boolean sameAs(IBeanProxy aBeanProxy) {
- return this == aBeanProxy; // This is place holder anyway. So only identical if same proxy.
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IInvokable getInvokable(String methodName, IBeanTypeProxy[] argumentTypes) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String, java.lang.String)
- */
- public IInvokable getInvokable(String methodName, String argumentClassName) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String, java.lang.String[])
- */
- public IInvokable getInvokable(String methodName, String[] argumentClassNames) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getInvokable(java.lang.String)
- */
- public IInvokable getInvokable(String methodName) {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleConstructor(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getCompatibleConstructor(IBeanTypeProxy[] argumentTypes) {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleMethod(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getCompatibleMethod(String methodName, IBeanTypeProxy[] argumentTypes) {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isBeanProxy()
- */
- public final boolean isBeanProxy() {
- return true;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isExpressionProxy()
- */
- public final boolean isExpressionProxy() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getMethodProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, org.eclipse.jem.internal.proxy.core.IProxyBeanType[])
- */
- public IProxyMethod getMethodProxy(IExpression expression, String methodName, IProxyBeanType[] parameters) {
- return null; // Since this guy is invalid, we can't return a method.
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getMethodProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, java.lang.String[])
- */
- public IProxyMethod getMethodProxy(IExpression expression, String methodName, String[] parameterTypes) {
- return null;
- }
-
- public IProxyMethod getMethodProxy(IExpression expression, String methodName) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxyBeanType#getFieldProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String)
- */
- public IProxyField getFieldProxy(IExpression expression, String fieldName) {
- return null;
- }
-
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanProxy.java
deleted file mode 100644
index 790596823..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanProxy.java
+++ /dev/null
@@ -1,49 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Proxy for Integers. Since Integers were first implemented
- * in the VCE, and because they are often referenced, we've created
- * a subclass to handle them. That way we wouldn't need to change
- * everyone that was using the IIntegerProxy interface.
- * Creation date: (08/31/00 11:28:48 AM)
- * @author: Administrator
- */
-class REMIntegerClassBeanProxy extends REMNumberBeanProxy implements IIntegerBeanProxy {
-
-REMIntegerClassBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anInteger) {
- super(aRegistry, anInteger);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).integerClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set((Integer) numberValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanTypeProxy.java
deleted file mode 100644
index 7e5d6cc5d..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerClassBeanTypeProxy.java
+++ /dev/null
@@ -1,85 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of INumberBeanProxy for Integer.class.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMIntegerClassBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final IIntegerBeanProxy zeroProxy;
- private final IIntegerBeanProxy oneProxy;
- private final IIntegerBeanProxy twoProxy;
- private final IIntegerBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMIntegerClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.INTEGER_CLASS), Integer.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMIntegerClassBeanProxy(aRegistry, new Integer(0));
- oneProxy = new REMIntegerClassBeanProxy(aRegistry, new Integer(1));
- twoProxy = new REMIntegerClassBeanProxy(aRegistry, new Integer(2));
- threeProxy = new REMIntegerClassBeanProxy(aRegistry, new Integer(3));
-
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-IIntegerBeanProxy createIntegerBeanProxy(Integer anInteger) {
- switch(anInteger.intValue()) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- default: return new REMIntegerClassBeanProxy(fRegistry, anInteger);
- }
-}
-
-/**
- * Generic way to create an Integer proxy, however, the Number must be an Integer.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createIntegerBeanProxy((Integer) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createIntegerBeanProxy(new Integer(value.anInt));
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanProxy.java
deleted file mode 100644
index e80dcc1ec..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanProxy.java
+++ /dev/null
@@ -1,132 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote Implementation of IIntegerBeanProxy for the primitive "int".
- * It can answer all of the primitive number types (int, long, short, byte, double, float).
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-class REMIntegerTypeBeanProxy extends REMConstantBeanProxy implements IIntegerBeanProxy {
- private final int fInt;
-
-/**
- * It is package protected because they are created
- * in a special way and no one else should create them.
- * @param aBean java.lang.Object
- */
-REMIntegerTypeBeanProxy(REMProxyFactoryRegistry aRegistry, int anInt) {
- super(aRegistry);
- fInt = anInt;
-}
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMIntegerTypeBeanProxy)
- return fInt == ((REMIntegerTypeBeanProxy) anObject).intValue();
- if (anObject instanceof Integer)
- return fInt == ((Integer) anObject).intValue();
- return false;
-}
-
-/* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
-public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMIntegerTypeBeanProxy)
- return fInt == ((REMIntegerTypeBeanProxy) aBeanProxy).intValue();
- return false;
-}
-
-/**
- * byteValue method comment.
- */
-public byte byteValue() {
- return (byte) fInt;
-}
-/**
- * doubleValue method comment.
- */
-public double doubleValue() {
- return fInt;
-}
-/**
- * floatValue method comment.
- */
-public float floatValue() {
- return fInt;
-}
-/**
- * Return the int value
- */
-public int intValue() {
- return fInt;
-}
-/**
- * longValue method comment.
- */
-public long longValue() {
- return fInt;
-}
-/**
- * numberValue method comment.
- */
-public Number numberValue() {
- return new Integer(fInt);
-}
-/**
- * shortValue method comment.
- */
-public short shortValue() {
- return (short) fInt;
-}
-
-/**
- * The bean's toString.
- */
-public String toBeanString() {
- return String.valueOf(fInt);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).intType;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fInt);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanTypeProxy.java
deleted file mode 100644
index 1f35e7f88..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMIntegerTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,111 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Integer.TYPE.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMIntegerTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-// Some values are cache'd for speed
- private final IIntegerBeanProxy zeroProxy;
- private final IIntegerBeanProxy oneProxy;
- private final IIntegerBeanProxy twoProxy;
- private final IIntegerBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMIntegerTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.INTEGER_TYPE), Integer.TYPE.getName());
-
- // Create the cached values
- zeroProxy = new REMIntegerTypeBeanProxy(aRegistry, 0);
- oneProxy = new REMIntegerTypeBeanProxy(aRegistry, 1);
- twoProxy = new REMIntegerTypeBeanProxy(aRegistry, 2);
- threeProxy = new REMIntegerTypeBeanProxy(aRegistry, 3);
-
-}
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- * Use the cache to see if the value is being held before creating a new one
- */
-IIntegerBeanProxy createIntegerBeanProxy(int anInt) {
-
- switch(anInt) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- default: return new REMIntegerTypeBeanProxy(fRegistry, anInt);
- }
-}
-
-/**
- * newInstance method. integer is a primitive, so the standard way won't work.
- * Return the zeroProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createIntegerBeanProxy(value.anInt);
-}
-
-/**
- * Short cut for newInstance where the string follows the
- * specific pattern we expect. That way it won't be necessary to ship over to the vm
- * to process it.
- *
- * The pattern it can accept is:
- * 1) (int) validNumber - number can be any number because (byte) explicitly casts it down.
- * 2) validNumber
- * It will use the decode function of int to determine the valid number.
- */
-public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- String trim = initializationString.trim();
- if (trim.length() == 0)
- return super.newInstance(initializationString);
- int anInt;
- if (trim.startsWith("(int)")) { //$NON-NLS-1$
- Number v = parseString(trim.substring("(int)".length()).trim()); //$NON-NLS-1$
- if (v != null)
- anInt = v.intValue();
- else
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- } else {
- try {
- anInt = Integer.decode(trim).intValue(); // See if valid int format.
- } catch (NumberFormatException e) {
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- }
- }
-
- return getProxyFactoryRegistry().getBeanProxyFactory().createBeanProxyWith(anInt);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInterfaceBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInterfaceBeanTypeProxy.java
deleted file mode 100644
index f18ed5221..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInterfaceBeanTypeProxy.java
+++ /dev/null
@@ -1,72 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Default beantype proxy for an interface.
- */
-
-public class REMInterfaceBeanTypeProxy extends REMAbstractBeanTypeProxy {
-
- protected REMInterfaceBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname) {
- super(aRegistry, anID, aClassname, null);
- }
-
- /**
- * Interfaces are interfaces.
- */
- public boolean isInterface() {
- return true;
- }
-
- /**
- * Create a new bean proxy with the specified id.
- *
- * For all of the interface types, this is an invalid operation.
- */
- public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the interface types, you can't create a newBeanType for subclasses since
- * interface aren't subclassable, only extendable.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstact) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Note: Since new instances of interfaces can never be done,
- * this function is not supported.
- */
- public IBeanProxy newInstance() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * newInstance(initializationString) is valid because it can be used to create
- * an instance of an implementation of the interface.
- */
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInvokable.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInvokable.java
deleted file mode 100644
index fc4514b75..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMInvokable.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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.remote;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.*;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.core.IInvokable;
-
-
-/**
- * Remote Invokable. This invokes on the remote vm, but it doesn't use a method proxy. Instead
- * it sends the information to get the method to the remote vm along with the parms. That way
- * it will do the lookup on the remote vm and we don't have the overhead of two calls, one to
- * get the methodproxy and the other to actually do the invoke. This should typically be used
- * only for infrequent calls so that cache of the method proxy is not needed.
- *
- * @since 1.0.0
- */
-class REMInvokable implements IInvokable {
-
- protected final IREMBeanTypeProxy beanType; // Beantype to get method from.
- protected final String methodName; // Method name
- protected final IBeanTypeProxy[] methodArgTypes; // Argument types (or null if no arguments).
- protected final REMProxyFactoryRegistry factory; // Factory for this invokable
-
-
- REMInvokable(IREMBeanTypeProxy beanType, String methodName, IBeanTypeProxy[] methodArgTypes) {
- this.beanType = beanType;
- this.methodName = methodName;
- this.methodArgTypes = methodArgTypes;
- this.factory = (REMProxyFactoryRegistry) beanType.getProxyFactoryRegistry();
- }
-
- public IBeanProxy invoke(IBeanProxy subject) throws ThrowableProxy {
- return invoke(subject, (IBeanProxy[]) null);
- }
-
- public IBeanProxy invoke(IBeanProxy subject, IBeanProxy[] parms) throws ThrowableProxy {
- return invokeWithParms(subject, parms);
- }
-
- /**
- * The internal method that allows mixture of constants (e.g. String) with bean proxies.
- * A parm value can be a REMMethodProxy.ParmArray. This means this parm is an array that
- * needs to have a ValueRetriever created for it. This is used if the array has ID's in
- * it and is not an existing array on the server or all constant values.
- *
- * NOTE: It is assumed that all IBeanTypeProxies of the parms have already been retrieved.
- * It should still work, but it could be asking for them in the middle of the request
- * if they are not first gotton.
- *
- */
- public IBeanProxy invokeWithParms(IBeanProxy subject, final Object[] parms) throws ThrowableProxy {
- IREMConnection connect = factory.getFreeConnection();
- REMStandardBeanProxyFactory proxyFactory = (REMStandardBeanProxyFactory) factory.getBeanProxyFactory();
- proxyFactory.startTransaction(); // This is definately a transaction, so start it.
- try {
- // First need to send the method info.
- Commands.ValueObject classValue = new Commands.ValueObject();
- beanType.renderBean(classValue);
-
- Commands.ValueObject parmTypesValue = new Commands.ValueObject();
- if (methodArgTypes != null) {
- class Retriever implements Commands.ValueRetrieve {
- int index = 0;
- Object[] array;
- Commands.ValueObject worker = new Commands.ValueObject();
-
- public Retriever(Object[] anArray) {
- array = anArray;
- }
-
- public Commands.ValueObject nextValue() {
- Object parm = array[index++];
- ((IREMBeanTypeProxy) parm).renderBean(worker);
- return worker;
- }
- };
-
- parmTypesValue.setArrayIDS(new Retriever(methodArgTypes), methodArgTypes.length, Commands.CLASS_CLASS); // Create Class[].
- }
-
-
- // Now we start building the actual invocation.
-
- Commands.ValueObject subjectValue = new Commands.ValueObject();
- if (subject != null)
- ((IREMBeanProxy) subject).renderBean(subjectValue);
-
- Commands.ValueObject parmsValue = new Commands.ValueObject();
-
- if (parms != null) {
- // Have a local definition of the retriever so that the retriever can create
- // another one of itself if necessary.
- final IStandardBeanTypeProxyFactory typeFactory = factory.getBeanTypeProxyFactory();
-
- class Retriever implements Commands.ValueRetrieve {
- int index = 0;
- Object[] array;
- Commands.ValueObject worker = new Commands.ValueObject();
-
- public Retriever(Object[] anArray) {
- array = anArray;
- }
-
- public Commands.ValueObject nextValue() {
- Object parm = array[index++];
- if (parm != null)
- if (parm instanceof IREMBeanProxy)
- ((IREMBeanProxy) parm).renderBean(worker);
- else if (parm instanceof TransmitableArray) {
- // It is another array, create a new retriever.
- worker.setArrayIDS(
- new Retriever(((TransmitableArray) parm).array),
- ((TransmitableArray) parm).array.length,
- ((TransmitableArray) parm).componentTypeID);
- } else {
- // It's an object. Need to get bean type so that we can send it.
- IREMBeanProxy type = (IREMBeanProxy) typeFactory.getBeanTypeProxy(parm.getClass().getName());
- if (type == null)
- throw new IllegalArgumentException();
- int classID = type.getID().intValue();
- worker.setAsObject(parm, classID);
- }
- else
- worker.set();
- return worker;
- }
- };
-
- parmsValue.setArrayIDS(new Retriever(parms), parms.length, Commands.OBJECT_CLASS); // Create Object[].
- }
-
- Commands.ValueObject returnValue = new Commands.ValueObject();
- try {
- invoke(connect, proxyFactory, classValue, parmTypesValue, subjectValue, parmsValue, returnValue);
- return proxyFactory.getBeanProxy(returnValue);
- } catch (CommandException e) {
- if (!e.isRecoverable()) {
- // Close the connection and try again.
- factory.closeConnection(connect);
- connect = null;
- connect = factory.getFreeConnection();
- try {
- invoke(connect, proxyFactory, classValue, parmTypesValue, subjectValue, parmsValue, returnValue);
- return proxyFactory.getBeanProxy(returnValue);
- } catch (CommandException eAgain) {
- // Failed again. Just close and print trace.
- factory.closeConnection(connect);
- connect = null;
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", eAgain)); //$NON-NLS-1$
- return null;
- }
- } else {
- // A recoverable error, print trace and return
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- return null;
- }
- }
- } finally {
- proxyFactory.stopTransaction();
- if (connect != null)
- factory.returnConnection(connect);
- }
- }
-
-private void invoke(
- IREMConnection connect,
- REMStandardBeanProxyFactory proxyFactory,
- Commands.ValueObject classTypeValue,
- Commands.ValueObject parmTypesValue,
- Commands.ValueObject subjectValue,
- Commands.ValueObject parmsValue,
- Commands.ValueObject returnValue)
- throws ThrowableProxy, CommandException {
- try {
- connect.invokeMethod(classTypeValue, methodName, parmTypesValue, subjectValue, parmsValue, returnValue);
- } catch (CommandErrorException e) {
- proxyFactory.processErrorReturn(e);
- }
- }
-
- public IBeanProxy invoke(IBeanProxy subject, IBeanProxy parm) throws ThrowableProxy {
- return invoke(subject, new IBeanProxy[] { parm });
- }
-
- public IBeanProxy invokeCatchThrowableExceptions(IBeanProxy subject) {
- try {
- return invoke(subject);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- factory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
- public IBeanProxy invokeCatchThrowableExceptions(IBeanProxy subject, IBeanProxy[] parms) {
- try {
- return invoke(subject, parms);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- factory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
- public IBeanProxy invokeCatchThrowableExceptions(IBeanProxy subject, IBeanProxy parm) {
- try {
- return invoke(subject, parm);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- factory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanProxy.java
deleted file mode 100644
index 94b41a244..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanProxy.java
+++ /dev/null
@@ -1,44 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Proxy for Long.class.
- */
-class REMLongClassBeanProxy extends REMNumberBeanProxy {
-
-REMLongClassBeanProxy(REMProxyFactoryRegistry aRegistry, Long aLong) {
- super(aRegistry, aLong);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).longClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set((Long) numberValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanTypeProxy.java
deleted file mode 100644
index 45556c21c..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongClassBeanTypeProxy.java
+++ /dev/null
@@ -1,87 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy Long.class.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMLongClassBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final INumberBeanProxy oneProxy;
- private final INumberBeanProxy twoProxy;
- private final INumberBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMLongClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.LONG_CLASS), Long.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMLongClassBeanProxy(aRegistry, new Long(0));
- oneProxy = new REMLongClassBeanProxy(aRegistry, new Long(1));
- twoProxy = new REMLongClassBeanProxy(aRegistry, new Long(2));
- threeProxy = new REMLongClassBeanProxy(aRegistry, new Long(3));
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createLongBeanProxy(Long aLong) {
- if (aLong.longValue() >= 0 && aLong.longValue() < 4) {
- // Switch statements don't work with longs.
- switch(aLong.intValue()) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- }
- }
- return new REMLongClassBeanProxy(fRegistry, aLong);
-}
-
-/**
- * Generic way to create a Long proxy, however, the Number must be a Long.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createLongBeanProxy((Long) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createLongBeanProxy(new Long(value.aLong));
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanProxy.java
deleted file mode 100644
index a26d8006c..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanProxy.java
+++ /dev/null
@@ -1,131 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote Implementation of INumberBeanProxy for the primitive "long".
- * It can answer all of the primitive number types (int, long, short, byte, double, float).
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-class REMLongTypeBeanProxy extends REMConstantBeanProxy implements INumberBeanProxy {
- private final long fLong;
-
-/**
- * It is package protected because they are created
- * in a special way and no one else should create them.
- * @param aBean java.lang.Object
- */
-REMLongTypeBeanProxy(REMProxyFactoryRegistry aRegistry, long aLong) {
- super(aRegistry);
- fLong = aLong;
-}
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMLongTypeBeanProxy)
- return fLong == ((REMLongTypeBeanProxy) anObject).longValue();
- if (anObject instanceof Long)
- return fLong == ((Long) anObject).longValue();
- return false;
-}
-
-/* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
-public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMLongTypeBeanProxy)
- return fLong == ((REMLongTypeBeanProxy) aBeanProxy).longValue();
- return false;
-}
-/**
- * byteValue method comment.
- */
-public byte byteValue() {
- return (byte) fLong;
-}
-/**
- * doubleValue method comment.
- */
-public double doubleValue() {
- return fLong;
-}
-/**
- * floatValue method comment.
- */
-public float floatValue() {
- return fLong;
-}
-/**
- * Return the int value
- */
-public int intValue() {
- return (int) fLong;
-}
-/**
- * longValue method comment.
- */
-public long longValue() {
- return fLong;
-}
-/**
- * numberValue method comment.
- */
-public Number numberValue() {
- return new Long(fLong);
-}
-/**
- * shortValue method comment.
- */
-public short shortValue() {
- return (short) fLong;
-}
-
-/**
- * The bean's toString.
- */
-public String toBeanString() {
- return String.valueOf(fLong);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).longType;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fLong);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanTypeProxy.java
deleted file mode 100644
index b35740141..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMLongTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,115 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Long.TYPE/
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMLongTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final INumberBeanProxy oneProxy;
- private final INumberBeanProxy twoProxy;
- private final INumberBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMLongTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.LONG_TYPE), Long.TYPE.getName());
-
- // Create the cached values
- zeroProxy = new REMLongTypeBeanProxy(aRegistry, 0);
- oneProxy = new REMLongTypeBeanProxy(aRegistry, 1);
- twoProxy = new REMLongTypeBeanProxy(aRegistry, 2);
- threeProxy = new REMLongTypeBeanProxy(aRegistry, 3);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createLongBeanProxy(long aLong) {
- if (aLong >= 0 && aLong < 4) {
- // Switch statements don't work with longs.
- switch((int) aLong) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- }
- }
- return new REMLongTypeBeanProxy(fRegistry, aLong);
-}
-
-/**
- * newInstance method. long is a primitive, so the standard way won't work.
- * Return the zeroProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createLongBeanProxy(value.aLong);
-}
-
-/**
- * Short cut for newInstance where the string follows the
- * specific pattern we expect. That way it won't be necessary to ship over to the vm
- * to process it.
- *
- * The pattern it can accept is:
- * 1) (long) validNumber - number can be any number because (byte) explicitly casts it down.
- * 2) validNumber
- * It will use the decode function of long to determine the valid number.
- */
-public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- String trim = initializationString.trim();
- if (trim.length() == 0)
- return super.newInstance(initializationString);
- long aLong;
- if (trim.startsWith("(long)")) { //$NON-NLS-1$
- Number v = parseString(trim.substring("(long)".length()).trim()); //$NON-NLS-1$
- if (v != null)
- aLong = v.longValue();
- else
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- } else {
- if (trim.charAt(trim.length()-1) == 'L' || trim.charAt(trim.length()-1) == 'l')
- trim = trim.substring(0, trim.length()-1);
- try {
- aLong = Long.decode(trim).longValue(); // See if valid long format.
- } catch (NumberFormatException e) {
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- }
- }
-
- return getProxyFactoryRegistry().getBeanProxyFactory().createBeanProxyWith(aLong);
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMasterServerThread.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMasterServerThread.java
deleted file mode 100644
index da70385dd..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMasterServerThread.java
+++ /dev/null
@@ -1,172 +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.remote;
-/*
-
-
- */
-
-import java.io.*;
-import java.net.*;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jem.internal.proxy.core.ProxyPlugin;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * Master Server thread for the Remote VMs.
- *
- * It responds to the remote vm requests to this IDE.
- *
- * It is package-protected because only ProxyRemotePluguin should access it.
- * @author richkulp
- */
-class REMMasterServerThread extends Thread {
-
- protected ServerSocket masterServerSocket;
- protected REMRegistryController registryController;
- protected boolean shuttingDown = false;
-
- // Kludge: Bug in Linux 1.3.xxx of JVM. Closing a socket while the socket is being read/accept will not interrupt the
- // wait. Need to timeout to the socket read/accept before the socket close will be noticed. This has been fixed
- // in Linux 1.4. So on Linux 1.3 need to put timeouts in on those sockets that can be separately closed while reading/accepting.
- static boolean LINUX_1_3 = "linux".equalsIgnoreCase(System.getProperty("os.name")) && System.getProperty("java.version","").startsWith("1.3"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-
-
- public REMMasterServerThread(REMRegistryController registryController) {
- super("Remote Proxy Master Server Thread"); //$NON-NLS-1$
- this.registryController = registryController;
-
- try {
- masterServerSocket = new ServerSocket(0, 50, InetAddress.getByName("localhost")); // Any available port //$NON-NLS-1$
- if (LINUX_1_3)
- masterServerSocket.setSoTimeout(1000); // Linux 1.3 bug, see comment on LINUX_1_3
- } catch (SocketException e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); // This is bad. Should be no exceptions creating a socket. //$NON-NLS-1$
- } catch (IOException e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); // This is bad. Should be no exceptions creating a socket. //$NON-NLS-1$
- }
- }
-
- public ServerSocket getMasterSocket() {
- return masterServerSocket;
- }
-
- /**
- * @see java.lang.Thread#run()
- */
- public void run() {
- try {
- while (masterServerSocket != null) {
- Socket incoming = null;
- try {
- incoming = masterServerSocket.accept();
- } catch (InterruptedIOException e) {
- continue; // Timeout, try again
- } catch (NullPointerException e) {
- continue; // In Linux 1.3 case masterServerSocket could of gone null between loop test and try block.
- }
- boolean close = false; // process request will tell if socket should be closed. it may be passed onto callback thread instead.
- try {
- close = processRequest(incoming);
- } finally {
- if (close) {
- try {
- incoming.close();
- } catch (IOException e) {
- }
- }
-}
- incoming = null;
- }
- } catch (Exception e) {
- if (!shuttingDown)
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- }
-
- shutdown(); // Either a bad exception or we were closed. Either way is shutdown.
- }
-
- /**
- * Use this to request a shutdown.
- */
- public void requestShutdown() {
- if (masterServerSocket == null)
- return;
- // Closing the server socket should cause a break.
- try {
- shuttingDown = true;
- masterServerSocket.close();
- } catch (Exception e) {
- }
- return;
- }
-
- protected boolean processRequest(Socket remote) throws IOException {
- DataInputStream in = new DataInputStream(remote.getInputStream());
- DataOutputStream out = new DataOutputStream(remote.getOutputStream());
- boolean close = true; // flag indicating socket not given over to callback. Don't close the socket when done because callback has it.
- try {
- byte cmd = in.readByte();
- switch (cmd) {
- case Commands.ALIVE:
- int registryID = in.readInt();
- out.writeBoolean(registryController.getRegistry(new Integer(registryID)) != null); // Return if registry still alive
- out.flush();
- break;
-
- case Commands.REMOTE_STARTED:
- registryID = in.readInt();
- int remoteServerPort = in.readInt();
- REMProxyFactoryRegistry registry = registryController.getRegistry(new Integer(registryID));
- if (registry != null) {
- registry.setServerPort(remoteServerPort);
- out.writeBoolean(true);
- } else
- out.writeBoolean(false); // No registry
- out.flush();
- break;
-
- case Commands.ATTACH_CALLBACK:
- registryID = in.readInt();
- registry = registryController.getRegistry(new Integer(registryID));
- if (registry != null) {
- close = !((REMCallbackRegistry) registry.getCallbackRegistry()).createCallback(remote); // close if failed, don't close if good.
- out.writeBoolean(!close); // if not close, then return it worked.
- } else
- out.writeBoolean(false);
- out.flush();
- break;
- }
- } catch (Exception e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- } finally {
- if (close) {
- try {
- in.close();
- } catch (IOException e) {
- }
- try {
- out.close();
- } catch (IOException e) {
- }
- }
- }
- return close;
- }
-
- private void shutdown() {
- requestShutdown();
- masterServerSocket = null;
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxy.java
deleted file mode 100644
index 681a90d99..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxy.java
+++ /dev/null
@@ -1,276 +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.remote;
-/*
-
-
- */
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.*;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote VM implementation of the MethodProxy
- */
-
-final class REMMethodProxy extends REMAccessibleObjectProxy implements IREMMethodProxy {
-
- private IBeanTypeProxy fDeclaringType;
- private String fMethodName;
- private IBeanTypeProxy[] fParameterTypes;
- private IBeanTypeProxy fReturnType;
-
- REMMethodProxy(REMProxyFactoryRegistry aRegistry, Integer anID) {
- super(aRegistry, anID);
- }
-
- public IBeanTypeProxy getClassType() {
- if (fDeclaringType == null)
- fDeclaringType =
- (IBeanTypeProxy) REMStandardBeanProxyConstants
- .getConstants(fFactory)
- .getMethodDeclaringClassMessage()
- .invokeCatchThrowableExceptions(
- this);
- return fDeclaringType;
- }
-
- public String getName() {
- if (fMethodName == null) {
- IStringBeanProxy proxy =
- (IStringBeanProxy) REMStandardBeanProxyConstants
- .getConstants(fFactory)
- .getMethodMethodNameMessage()
- .invokeCatchThrowableExceptions(
- this);
- if (proxy != null)
- fMethodName = proxy.stringValue();
- else
- fMethodName = ""; //$NON-NLS-1$
- }
- return fMethodName;
- }
-
- public synchronized IBeanTypeProxy[] getParameterTypes() {
- if (fParameterTypes == null) {
- IArrayBeanProxy parmTypes = (IArrayBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory)
- .getMethodParameterTypesMessage().invokeCatchThrowableExceptions(this);
- if (parmTypes == null)
- fParameterTypes = new IBeanTypeProxy[0]; // There was some error, only way null is returned
- else {
- int len = parmTypes.getLength();
- fParameterTypes = new IBeanTypeProxy[len];
- for (int i = 0; i < len; i++)
- try {
- fParameterTypes[i] = (IBeanTypeProxy) parmTypes.get(i);
- } catch (ThrowableProxy e) {
- }
- fFactory.releaseProxy(parmTypes); // Don't need the array on the server anymore.
- }
- }
-
- return fParameterTypes;
- }
-
- public IBeanTypeProxy getReturnType() {
- if (fReturnType == null)
- fReturnType =
- (IBeanTypeProxy) REMStandardBeanProxyConstants
- .getConstants(fFactory)
- .getMethodReturnTypeMessage()
- .invokeCatchThrowableExceptions(
- this);
- return fReturnType;
- }
-
- public IBeanProxy invoke(IBeanProxy subject) throws ThrowableProxy {
- return invoke(subject, (IBeanProxy[]) null);
- }
-
- public IBeanProxy invoke(IBeanProxy subject, IBeanProxy[] parms) throws ThrowableProxy {
- return invokeWithParms(subject, parms);
- }
-
- /**
- * The internal method that allows mixture of constants (e.g. String) with bean proxies.
- * A parm value can be a REMMethodProxy.ParmArray. This means this parm is an array that
- * needs to have a ValueRetriever created for it. This is used if the array has ID's in
- * it and is not an existing array on the server or all constant values.
- *
- * NOTE: It is assumed that all IBeanTypeProxies of the parms have already been retrieved.
- * It should still work, but it could be asking for them in the middle of the request
- * if they are not first gotton.
- *
- * NOTE: This is in IREMMethodProxy only so that other REM proxy implementations can access it.
- */
-
- public IBeanProxy invokeWithParms(IBeanProxy subject, final Object[] parms) throws ThrowableProxy {
- IREMConnection connect = fFactory.getFreeConnection();
- REMStandardBeanProxyFactory proxyFactory = (REMStandardBeanProxyFactory) fFactory.getBeanProxyFactory();
- proxyFactory.startTransaction(); // This is definately a transaction, so start it.
- try {
- Commands.ValueObject subjectValue = new Commands.ValueObject();
- if (subject != null)
- ((IREMBeanProxy) subject).renderBean(subjectValue);
-
- Commands.ValueObject parmsValue = new Commands.ValueObject();
-
- class Retriever implements Commands.ValueRetrieve {
- int index = 0;
- Object[] array;
- Commands.ValueObject worker = new Commands.ValueObject();
- IStandardBeanTypeProxyFactory typeFactory = fFactory.getBeanTypeProxyFactory();
-
- public Retriever(Object[] anArray) {
- array = anArray;
- }
-
- public void reset() {
- index = 0;
- }
-
- public Commands.ValueObject nextValue() {
- Object parm = array[index++];
- if (parm != null)
- if (parm instanceof IREMBeanProxy)
- ((IREMBeanProxy) parm).renderBean(worker);
- else if (parm instanceof TransmitableArray) {
- // It is another array, create a new retriever.
- worker.setArrayIDS(
- new Retriever(((TransmitableArray) parm).array),
- ((TransmitableArray) parm).array.length,
- ((TransmitableArray) parm).componentTypeID);
- } else {
- // It's an object. Need to get bean type so that we can send it.
- IREMBeanProxy type = (IREMBeanProxy) typeFactory.getBeanTypeProxy(parm.getClass().getName());
- if (type == null)
- throw new IllegalArgumentException();
- int classID = type.getID().intValue();
- worker.setAsObject(parm, classID);
- }
- else
- worker.set();
- return worker;
- }
- };
-
- Retriever retriever = null;
-
- if (parms != null) {
- // Have a local definition of the retriever so that the retriever can create
- // another one of itself if necessary.
- parmsValue.setArrayIDS(retriever = new Retriever(parms), parms.length, Commands.OBJECT_CLASS); // Create Object[].
- }
-
- Commands.ValueObject returnValue = new Commands.ValueObject();
- try {
- invoke(connect, proxyFactory, subjectValue, parmsValue, returnValue);
- return proxyFactory.getBeanProxy(returnValue);
- } catch (CommandException e) {
- if (!e.isRecoverable()) {
- // Close the connection and try again.
- fFactory.closeConnection(connect);
- connect = null;
- connect = fFactory.getFreeConnection();
- try {
- if (retriever != null)
- retriever.reset();
- invoke(connect, proxyFactory, subjectValue, parmsValue, returnValue);
- return proxyFactory.getBeanProxy(returnValue);
- } catch (CommandException eAgain) {
- // Failed again. Just close and print trace.
- fFactory.closeConnection(connect);
- connect = null;
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", eAgain)); //$NON-NLS-1$
- return null;
- }
- } else {
- // A recoverable error, print trace and return
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- return null;
- }
- }
- } finally {
- proxyFactory.stopTransaction();
- if (connect != null)
- fFactory.returnConnection(connect);
- }
- }
-
-private void invoke(
- IREMConnection connect,
- REMStandardBeanProxyFactory proxyFactory,
- Commands.ValueObject subjectValue,
- Commands.ValueObject parmsValue,
- Commands.ValueObject returnValue)
- throws ThrowableProxy, CommandException {
- try {
- connect.invokeMethod(getID().intValue(), subjectValue, parmsValue, returnValue);
- } catch (CommandErrorException e) {
- proxyFactory.processErrorReturn(e);
- }
- }
-
- public IBeanProxy invoke(IBeanProxy subject, IBeanProxy parm) throws ThrowableProxy {
- return invoke(subject, new IBeanProxy[] { parm });
- }
-
- public IBeanProxy invokeCatchThrowableExceptions(IBeanProxy subject) {
- try {
- return invoke(subject);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- fFactory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
- public IBeanProxy invokeCatchThrowableExceptions(IBeanProxy subject, IBeanProxy[] parms) {
- try {
- return invoke(subject, parms);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- fFactory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
- public IBeanProxy invokeCatchThrowableExceptions(IBeanProxy subject, IBeanProxy parm) {
- try {
- return invoke(subject, parm);
- } catch (ThrowableProxy e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- fFactory.releaseProxy(e); // Since it's no longer needed, get rid of now instead of GC time.
- return null;
- }
- }
-
- /**
- * The type proxy is constant proxy out of the method factory.
- */
- public IBeanTypeProxy getTypeProxy() {
- return ((REMMethodProxyFactory) fFactory.getMethodProxyFactory()).methodType;
- }
-
- /**
- * The bean is being released, clear out the fields so they can be GC'd if necessary.
- * Usually only big objects and proxy fields need to be cleared.
- */
- public void release() {
- fDeclaringType = null;
- fParameterTypes = null;
- fReturnType = null;
- super.release();
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxyFactory.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxyFactory.java
deleted file mode 100644
index 8660c8e3c..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodProxyFactory.java
+++ /dev/null
@@ -1,305 +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.remote;
-
-import java.lang.reflect.AccessibleObject;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.common.remote.TransmitableArray;
-
-/**
- * Factory for creating method proxies. Creation date: (12/3/99 6:29:40 PM)
- *
- * @author: Joe Winchester
- */
-public class REMMethodProxyFactory implements IMethodProxyFactory {
-
- final protected REMProxyFactoryRegistry fFactoryRegistry;
-
- // Cached copy of a few typical method type proxies.
- IREMBeanTypeProxy accessibleType;
-
- REMMethodTypeProxy methodType;
-
- REMFieldTypeProxy fieldType;
-
- REMConstructorTypeProxy ctorType;
-
- REMMethodProxy getMethodProxy;
-
- REMMethodProxyFactory(REMProxyFactoryRegistry aRegistry) {
- fFactoryRegistry = aRegistry;
- aRegistry.registerMethodProxyFactory(this);
- REMStandardBeanTypeProxyFactory typeFactory = (REMStandardBeanTypeProxyFactory) aRegistry.getBeanTypeProxyFactory();
-
- accessibleType = typeFactory.objectClass.newBeanTypeForClass(new Integer(Commands.ACCESSIBLEOBJECT_CLASS), AccessibleObject.class.getName(),
- false);
- methodType = new REMMethodTypeProxy(aRegistry, accessibleType);
- fieldType = new REMFieldTypeProxy(aRegistry, accessibleType);
- ctorType = new REMConstructorTypeProxy(aRegistry, accessibleType);
- aRegistry.getBeanTypeProxyFactory().registerBeanTypeProxy(accessibleType, true);
- aRegistry.getBeanTypeProxyFactory().registerBeanTypeProxy(methodType, true);
- aRegistry.getBeanTypeProxyFactory().registerBeanTypeProxy(fieldType, true);
- aRegistry.getBeanTypeProxyFactory().registerBeanTypeProxy(ctorType, true);
-
- getMethodProxy = (REMMethodProxy) methodType.newBeanProxy(new Integer(Commands.GET_METHOD_ID));
- ((REMStandardBeanProxyFactory) aRegistry.getBeanProxyFactory()).registerProxy(getMethodProxy);
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IMethodProxyFactory#getMethodProxy(java.lang.String, java.lang.String, java.lang.String[])
- */
- public IMethodProxy getMethodProxy(String className, String methodName, String[] parameterTypes) {
- IStandardBeanTypeProxyFactory typeFactory = fFactoryRegistry.getBeanTypeProxyFactory();
- IBeanTypeProxy clsProxy = typeFactory.getBeanTypeProxy(className);
- if (clsProxy == null)
- return null;
- // This will redirect to the beantype, which will go through the method cache.
- return clsProxy.getMethodProxy(methodName, parameterTypes);
- }
-
- /**
- * A helper method to get the method proxy for the expression. This is used by registries and beantype proxies. It will go through
- * the method cache to make sure we get only one.
- *
- * @param expression
- * @param aBeanTypeProxy
- * @param methodName
- * @param parmTypes
- * @return
- *
- * @since 1.1.0
- */
- public IProxyMethod getMethodProxy(IExpression expression, IProxyBeanType aBeanTypeProxy, String methodName, IProxyBeanType[] parmTypes){
- return ((REMStandardBeanTypeProxyFactory) fFactoryRegistry.getBeanTypeProxyFactory()).proxyConstants.getMethodProxy(expression, aBeanTypeProxy, methodName, parmTypes);
- }
-
- /**
- * A helper method to get the field proxy for the expression. This is used by registries and beantype proxies. It will go through
- * the method cache to make sure we get only one.
- * @param expression
- * @param aBeanTypeProxy
- * @param fieldName
- *
- * @return
- *
- * @since 1.1.0
- */
- public IProxyField getFieldProxy(IExpression expression, IProxyBeanType aBeanTypeProxy, String fieldName){
- return ((REMStandardBeanTypeProxyFactory) fFactoryRegistry.getBeanTypeProxyFactory()).proxyConstants.getFieldProxy(expression, aBeanTypeProxy, fieldName);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IMethodProxyFactory#getFieldProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, java.lang.String)
- */
- public IProxyField getFieldProxy(IExpression expression, String className, String fieldName) {
- // We are getting the class resolved through the expression. Might as well because it probably will
- // be needed again and this way when the expression is finished it will be resolved for later usage.
- IStandardBeanTypeProxyFactory beanTypeProxyFactory = fFactoryRegistry.getBeanTypeProxyFactory();
- IProxyBeanType beanType = beanTypeProxyFactory.getBeanTypeProxy(expression, className);
- return beanType.getFieldProxy(expression, fieldName);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IMethodProxyFactory#getMethodProxy(org.eclipse.jem.internal.proxy.core.IExpression, java.lang.String, java.lang.String, java.lang.String[])
- */
- public IProxyMethod getMethodProxy(IExpression expression, String className, String methodName, String[] parameterTypes) {
- // We are getting the class and parmtypes resolved through the expression. Might as well because they probably will
- // be needed again and this way when the expression is finished they will be resolved for later usage.
- IStandardBeanTypeProxyFactory beanTypeProxyFactory = fFactoryRegistry.getBeanTypeProxyFactory();
- IProxyBeanType beanType = beanTypeProxyFactory.getBeanTypeProxy(expression, className);
- IProxyBeanType[] parmTypes = getParameterTypes(expression, parameterTypes, beanTypeProxyFactory);
- return beanType.getMethodProxy(expression, methodName, parmTypes);
- }
-
- /**
- * Helper method for BeanTypes and proxy Beantypes. So they don't need to have common code to convert string to proxy bean type.
- * @param expression
- * @param classType
- * @param methodName
- * @param parameterTypes
- * @return
- *
- * @since 1.1.0
- */
- public IProxyMethod getMethodProxy(IExpression expression, IProxyBeanType classType, String methodName, String[] parameterTypes) {
- // We are getting the class and parmtypes resolved through the expression. Might as well because they probably will
- // be needed again and this way when the expression is finished they will be resolved for later usage.
- IStandardBeanTypeProxyFactory beanTypeProxyFactory = fFactoryRegistry.getBeanTypeProxyFactory();
- IProxyBeanType[] parmTypes = getParameterTypes(expression, parameterTypes, beanTypeProxyFactory);
- return classType.getMethodProxy(expression, methodName, parmTypes);
- }
-
- /**
- * @param expression
- * @param parameterTypes
- * @param beanTypeProxyFactory
- * @return
- *
- * @since 1.1.0
- */
- protected IProxyBeanType[] getParameterTypes(IExpression expression, String[] parameterTypes, IStandardBeanTypeProxyFactory beanTypeProxyFactory) {
- IProxyBeanType[] parmTypes;
- if (parameterTypes == null || parameterTypes.length == 0)
- parmTypes = null;
- else {
- parmTypes = new IProxyBeanType[parameterTypes.length];
- for (int i = 0; i < parameterTypes.length; i++) {
- parmTypes[i] = beanTypeProxyFactory.getBeanTypeProxy(expression, parameterTypes[i]);
- }
- }
- return parmTypes;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IMethodProxyFactory#getInvokable(java.lang.String, java.lang.String, java.lang.String[])
- */
- public IInvokable getInvokable(String className, String methodName, String[] parameterTypes) {
- IStandardBeanTypeProxyFactory typeFactory = fFactoryRegistry.getBeanTypeProxyFactory();
- IBeanTypeProxy clsProxy = typeFactory.getBeanTypeProxy(className);
- if (clsProxy == null)
- return null;
- return clsProxy.getInvokable(methodName, parameterTypes);
- }
-
- /**
- * Get the method id from the remote system and create the method proxy.
- *
- * NOTE: It is public ONLY so that IBeanTypeProxy implementations can call it. It must not be used by anyone else.
- *
- * @param beanType
- * @param methodName
- * @param parameterTypes
- * @return
- *
- * @since 1.0.0
- */
- public IInvokable getInvokable(IREMBeanTypeProxy beanType, String methodName, String[] parameterTypes) {
- // First convert the parameter types into IBeanTypeProxy[].
- IREMBeanTypeProxy[] types = null;
- if (parameterTypes != null) {
- IStandardBeanTypeProxyFactory typeFactory = fFactoryRegistry.getBeanTypeProxyFactory();
- types = new IREMBeanTypeProxy[parameterTypes.length];
- for (int i = 0; i < parameterTypes.length; i++) {
- IBeanTypeProxy type = types[i] = (IREMBeanTypeProxy) typeFactory.getBeanTypeProxy(parameterTypes[i]);
- if (type == null)
- return null; // One of the parm types doesn't exist.
- }
- }
-
- return getInvokable(beanType, methodName, types);
- }
-
- /**
- * Get the method id from the remote system and create the method proxy.
- * This does not go through the method cache. It goes direct to the remote vm.
- *
- * NOTE: It is public ONLY so that IBeanTypeProxy implementations can call it. It must not be used by anyone else.
- */
- public IMethodProxy getMethodProxy(IREMBeanTypeProxy beanType, String methodName, String[] parameterTypes) {
- // First convert the parameter types into IBeanTypeProxy[].
- IBeanTypeProxy[] types = null;
- if (parameterTypes != null) {
- IStandardBeanTypeProxyFactory typeFactory = fFactoryRegistry.getBeanTypeProxyFactory();
- types = new IBeanTypeProxy[parameterTypes.length];
- for (int i = 0; i < parameterTypes.length; i++) {
- IBeanTypeProxy type = types[i] = typeFactory.getBeanTypeProxy(parameterTypes[i]);
- if (type == null)
- return null; // One of the parm types doesn't exist.
- }
- }
-
- return getMethodProxy(beanType, methodName, types);
- }
-
-
- /**
- * Get the invokable.
- *
- * NOTE: It is public ONLY so that IBeanTypeProxy implementations can call it. It must not be used by anyone else.
- * @param beanType
- * @param methodName
- * @param parameterTypes
- * @return
- *
- * @since 1.0.0
- */
- public IInvokable getInvokable(IREMBeanTypeProxy beanType, String methodName, IBeanTypeProxy[] parameterTypes) {
- return new REMInvokable(beanType, methodName, parameterTypes);
- }
-
- /**
- * Get the method id from the remote system and create the method proxy.
- * <p>
- * This does not go through the method cache. It goes direct to the remote vm.
- *
- * NOTE: It is public ONLY so that IBeanTypeProxy implementations can call it. It must not be used by anyone else.
- */
- public IMethodProxy getMethodProxy(IREMBeanTypeProxy beanType, String methodName, IBeanTypeProxy[] parameterTypes) {
- // The parms to getMethod are:
- // parm[0] = String - method name
- // parm[1] = Class[] - Parameter Classes.
- Object[] parms = new Object[] { methodName, parameterTypes != null ? (new TransmitableArray(Commands.CLASS_CLASS, parameterTypes)) : null};
- IBeanProxy result = null;
- try {
- result = getMethodProxy.invokeWithParms(beanType, parms);
- return (IMethodProxy) result;
- } catch (ThrowableProxy e) {
- fFactoryRegistry.releaseProxy(e); // Since it's not needed, get rid of now instead of GC time.
- return null;
- } catch (ClassCastException e) {
- // Some trace msgs because we keep getting into a mode after awhile (though not reproducible) that returns non-method proxies and we need
- // more info.
- StringBuffer buf = new StringBuffer("Method requested is \"" + methodName + "("); //$NON-NLS-1$ //$NON-NLS-2$
- for (int i = 0; i < parameterTypes.length; i++) {
- if (i > 0)
- buf.append(','); //$NON-NLS-1$
- buf.append(parameterTypes[i].getTypeName());
- }
- buf.append(")\""); //$NON-NLS-1$
- ProxyPlugin.getPlugin().getLogger().log(
- new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, buf.toString(), null));
- try {
- if (result != null) {
- ProxyPlugin.getPlugin().getLogger().log(
- new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0,
- "ClassCastException of result. Return type is \"" + result.getTypeProxy().getTypeName() + "\"\n" + //$NON-NLS-1$ //$NON-NLS-2$
- "Return type bean type proxy class=\"" + result.getTypeProxy().getClass().getName() + "\"\n" + //$NON-NLS-1$ //$NON-NLS-2$
- "GetMethodProxy valid=" + getMethodProxy.isValid() + "\n" + //$NON-NLS-1$ //$NON-NLS-2$
- "GetMethodProxy real name is \"" + getMethodProxy.getName() + "\"\n", null)); //$NON-NLS-1$ //$NON-NLS-2$
- }
- } catch (Exception e2) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.ERROR, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e2)); //$NON-NLS-1$
- }
- throw e; // Rethrow it.
- }
- }
-
- /*
- * Terminate the factory. Don't need to do anything because of the proxies being held onto are registered any will be cleaned up themselves.
- */
- public void terminateFactory(boolean wait) {
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodTypeProxy.java
deleted file mode 100644
index d3019b951..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMMethodTypeProxy.java
+++ /dev/null
@@ -1,67 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * BeanType Proxy for Method class.
- */
-
-final class REMMethodTypeProxy extends REMAbstractBeanTypeProxy {
-
-REMMethodTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy accessibleTypeProxy) {
- super(aRegistry, new Integer(Commands.METHOD_CLASS), java.lang.reflect.Method.class.getName(), accessibleTypeProxy);
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the accessible object types, they are final classes, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Specialized from REMAbstractBeanTypeProxy to ensure Constructor proxies are created correctly.
- */
-public IREMBeanProxy newBeanProxy(Integer objectID) {
- return new REMMethodProxy(fRegistry, objectID);
-}
-
-/**
- * Note: Since new instances of Constructor are never done through a default ctor,
- * this function is not supported.
- */
-public IBeanProxy newInstance() {
- throw new UnsupportedOperationException();
-}
-
-/**
- * Note: Since new instances of Constructor are never done through an initialization string,
- * this function is not supported.
- */
-public IBeanProxy newInstance(String initializationString) {
- throw new UnsupportedOperationException();
-}
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMNumberBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMNumberBeanProxy.java
deleted file mode 100644
index 8ca6e7ab9..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMNumberBeanProxy.java
+++ /dev/null
@@ -1,106 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-
-/**
- * Remote Implementation of INumberBeanProxy for any Number (i.e. the non-primitives)
- * It can answer all of the primitive number types (int, long, short, byte, double, float).
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-abstract class REMNumberBeanProxy extends REMConstantBeanProxy implements INumberBeanProxy {
- private final Number fNumberValue;
-
-/**
- * It is package protected because they are created
- * in a special way and no one else should create them.
- * @param aBean java.lang.Object
- */
-REMNumberBeanProxy(REMProxyFactoryRegistry aRegistry, Number aNumber) {
- super(aRegistry);
- fNumberValue = aNumber;
-}
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMNumberBeanProxy)
- return fNumberValue.equals(((REMNumberBeanProxy) anObject).numberValue());
- if (anObject instanceof Number)
- return fNumberValue.equals(anObject);
- return false;
-}
-/**
- * byteValue method comment.
- */
-public byte byteValue() {
- return fNumberValue.byteValue();
-}
-/**
- * doubleValue method comment.
- */
-public double doubleValue() {
- return fNumberValue.doubleValue();
-}
-/**
- * floatValue method comment.
- */
-public float floatValue() {
- return fNumberValue.floatValue();
-}
-/**
- * Return the int value
- */
-public int intValue() {
- return fNumberValue.intValue();
-}
-/**
- * longValue method comment.
- */
-public long longValue() {
- return fNumberValue.longValue();
-}
-/**
- * numberValue method comment.
- */
-public Number numberValue() {
- return fNumberValue;
-}
-/**
- * shortValue method comment.
- */
-public short shortValue() {
- return fNumberValue.shortValue();
-}
-
-/**
- * The bean's toString.
- */
-public String toBeanString() {
- return fNumberValue.toString();
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMPrimitiveBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMPrimitiveBeanTypeProxy.java
deleted file mode 100644
index 78c6f752b..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMPrimitiveBeanTypeProxy.java
+++ /dev/null
@@ -1,234 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Primitive BeanType Proxies
- */
-public abstract class REMPrimitiveBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMConstantBeanTypeProxy {
-
- protected REMPrimitiveBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname) {
- super(aRegistry, anID, aClassname, null);
- }
-
- /**
- * Return whether this is the primitive Byte.TYPE or Byte.class
- */
- public boolean isPrimitive() {
- return true;
- }
-
- /**
- * Return the null ctor proxy for this method with these arguments.
- * For all of the primitive types, this is an invalid operation.
- */
- public IConstructorProxy getNullConstructorProxy() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the primitive types, this is an invalid operation.
- */
- public IConstructorProxy getConstructorProxy(String[] argumentClassNames) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the primitive types, this is an invalid operation.
- */
- public IConstructorProxy getConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the primitive types, this is an invalid operation.
- */
- public IConstructorProxy[] getConstructors() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the primitive types, this is an invalid operation.
- */
- public IConstructorProxy getDeclaredConstructorProxy(String[] argumentClassNames) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the constructor for the target VM being the same as the REM
- * For all of the primitive types, this is an invalid operation.
- */
- public IConstructorProxy getDeclaredConstructorProxy(IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the primitive types, this is an invalid operation.
- */
- public IConstructorProxy[] getDeclaredConstructors() {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the primitive types, this is an invalid operation.
- */
- public IFieldProxy[] getFields() {
- throw new UnsupportedOperationException();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getConstructors()
- *
- * For all of the primitive types, this is an invalid operation.
- */
- public IFieldProxy[] getDeclaredFields() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return a proxy to the field for the target VM being the same as the REM
- * For all of the primitive types, this is an invalid operation.
- */
- public IFieldProxy getFieldProxy(String fieldName) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the primitive types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName, IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the primitive types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName, String[] argumentClassNames) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the primitive types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName, String argumentQualifiedTypeName) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Return the method proxy for this method with these arguments.
- * For all of the primitive types, this is an invalid operation.
- */
- public IMethodProxy getMethodProxy(String methodName) {
- throw new UnsupportedOperationException();
- }
-
-
- /**
- * Create a new bean proxy with the specified id.
- *
- * For all of the primitive types, this is an invalid operation. They are created
- * explicitly through the appropriate create method.
- */
- public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the primitive types, they aren't classes, so you can't create a newBeanType
- * for subclasses.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * release - BeanType is about to be released.
- * primitives don't need to be released, they don't hold onto any ids or resources.
- */
- public void release() {
- }
-
- /**
- * Have a string that should represent a number.
- * See if it ends in a type letter, if so parse as such.
- * See if there is an 'E' in it, then parse as a double.
- * If neither condition, then try parse as long, if that
- * fails try as double.
- */
- protected static Number parseString(String v) {
- if (v.length() == 0)
- return null;
- char last = v.charAt(v.length()-1);
- try {
- switch (last) {
- case 'd':
- case 'D':
- return Double.valueOf(v);
- case 'f':
- case 'F':
- return Float.valueOf(v);
- case 'l':
- case 'L':
- return Long.decode(v.substring(0, v.length()-1));
- }
- } catch (NumberFormatException e) {
- return null;
- }
-
- try {
- return Long.decode(v);
- } catch (NumberFormatException e) {
- try {
- return Double.valueOf(v);
- } catch (NumberFormatException e1) {
- return null;
- }
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleConstructor(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IConstructorProxy getCompatibleConstructor(IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanTypeProxy#getCompatibleMethod(java.lang.String, org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- public IMethodProxy getCompatibleMethod(String methodName, IBeanTypeProxy[] argumentTypes) {
- throw new UnsupportedOperationException();
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyConstants.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyConstants.java
deleted file mode 100644
index 92a9d3bcf..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyConstants.java
+++ /dev/null
@@ -1,679 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.remote;
-
-import java.util.*;
-import java.util.Map.Entry;
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.core.ExpressionProxy.ProxyEvent;
-
-
-
-
-/**
- * MethodProxyConstants is a cache of IMethodProxies to avoid repeated lookup
- * and thereby avoid the relatively expensive java.lang.reflect calls to repeatedly
- * lookup method by name
- *
- * @since 1.1.0
- */
-public class REMProxyConstants {
-
- private Map methodsCache = new HashMap(80);
- private Map invokablesCache = new HashMap(80);
- private Map fieldsCache = new HashMap(80);
-
- private REMProxyFactoryRegistry registry;
-
- public REMProxyConstants(REMProxyFactoryRegistry registry) {
- this.registry = registry;
- }
-
- /*
- * Used as the key to the methodCache and invokablesCache when there are parms.
- * It allows the parms to be either strings or IBeanTypeProxies without the
- * overhead of creating complicated strings.
- *
- * It will compare method name and each individual parm name without fluffing
- * up a string and building it up.
- *
- * For no parm methods, just the name of the method as a string will be the key.
- *
- * @since 1.1.0
- */
- private abstract static class MethodKey {
- public String methodName;
- public MethodKey(String methodName) {
- this.methodName = methodName;
- }
-
- protected abstract boolean compareParms(IProxyBeanType[] parms);
- protected abstract boolean compareParms(String[] parms);
-
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return methodName.hashCode();
- }
- }
-
- private static class MethodKeyStringParms extends MethodKey {
- public String[] parmNames;
-
- public MethodKeyStringParms(String methodName, String[] parmNames) {
- super(methodName);
- this.parmNames = parmNames;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- try {
- return ((MethodKey) obj).compareParms(parmNames);
- } catch (ClassCastException e) {
- return false;
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.REMProxyConstants.MethodKey#hashCode()
- */
- public int hashCode() {
- int h = super.hashCode();
- for (int i = 0; i < parmNames.length; i++) {
- h += parmNames[i].hashCode();
- }
- return h;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.REMProxyConstants.MethodKey#compareParms(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- protected boolean compareParms(IProxyBeanType[] parms) {
- if (parms.length != parmNames.length)
- return false;
- for (int i = 0; i < parms.length; i++) {
- if (!parms[i].getTypeName().equals(parmNames[i]))
- return false;
- }
- return true;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.REMProxyConstants.MethodKey#compareParms(java.lang.String[])
- */
- protected boolean compareParms(String[] parms) {
- return Arrays.equals(parms, parmNames);
- }
- }
-
- private static class MethodKeyProxyParms extends MethodKey {
- public IProxyBeanType[] parmTypes;
-
- public MethodKeyProxyParms(String methodName, IProxyBeanType[] parmTypes) {
- super(methodName);
- this.parmTypes = parmTypes;
- }
-
- public Object toMethodKeyStringParms() {
- String[] parms = new String[parmTypes.length];
- for (int i = 0; i < parmTypes.length; i++) {
- parms[i] = parmTypes[i].getTypeName();
- }
- return new MethodKeyStringParms(methodName, parms);
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- try {
- return ((MethodKey) obj).compareParms(parmTypes);
- } catch (ClassCastException e) {
- return false;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.REMProxyConstants.MethodKey#hashCode()
- */
- public int hashCode() {
- int h = super.hashCode();
- for (int i = 0; i < parmTypes.length; i++) {
- h += parmTypes[i].getTypeName().hashCode();
- }
- return h;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.REMProxyConstants.MethodKey#compareParms(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy[])
- */
- protected boolean compareParms(String[] parms) {
- if (parms.length != parmTypes.length)
- return false;
- for (int i = 0; i < parms.length; i++) {
- if (!parmTypes[i].getTypeName().equals(parms[i]))
- return false;
- }
- return true;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.remote.REMProxyConstants.MethodKey#compareParms(java.lang.String[])
- */
- protected boolean compareParms(IProxyBeanType[] parms) {
- if (parms.length != parmTypes.length)
- return false;
- for (int i = 0; i < parms.length; i++) {
- if (!parmTypes[i].getTypeName().equals(parms[i].getTypeName()))
- return false;
- }
- return true;
- }
- }
-
- static int REMMETHODCOUNT = 0;
- static int UNIQUEMETHODCOUNT = 0;
- static int REMINVOKABLECOUNT = 0;
- static int UNIQUEINVOKABLECOUNT = 0;
- static int INVOKEINVOKECOUNT = 0;
- static int METHODPROXYINVOKECOUNT = 0;
- static int REMFIELDCOUNT = 0;
- static int UNIQUEFIELDCOUNT = 0;
- static int REMCONSTRUCTORCALLED = 0;
- static HashMap METHODCOUNTMAP;
- static HashMap FIELDCOUNTMAP;
- static HashMap FIELDSETCOUNTMAP;
- static boolean GATHER_COUNTS;
-
- /**
- * Set if counts should be gathered.
- *
- * @param gatherCounts
- *
- * @since 1.1.0
- */
- public static void setGatherCounts(boolean gatherCounts) {
- if (gatherCounts != GATHER_COUNTS) {
- reset();
- if (gatherCounts) {
- if (METHODCOUNTMAP == null) {
- METHODCOUNTMAP = new HashMap();
- FIELDCOUNTMAP = new HashMap();
- FIELDSETCOUNTMAP = new HashMap();
- }
- }
- GATHER_COUNTS = gatherCounts;
- }
- }
-
-
- public static void reset(){
- REMMETHODCOUNT = UNIQUEMETHODCOUNT = REMINVOKABLECOUNT = UNIQUEINVOKABLECOUNT = REMCONSTRUCTORCALLED = METHODPROXYINVOKECOUNT = INVOKEINVOKECOUNT = REMFIELDCOUNT = UNIQUEFIELDCOUNT = 0;
- if (GATHER_COUNTS) {
- METHODCOUNTMAP.clear();
- FIELDCOUNTMAP.clear();
- FIELDSETCOUNTMAP.clear();
- }
- }
-
- public static void println(){
-
- if (GATHER_COUNTS) {
- System.out.println("--------------------------------------------------"); //$NON-NLS-1$
- System.out.println("Method proxies invokes = " + METHODPROXYINVOKECOUNT); //$NON-NLS-1$
- System.out.println("Invoke invokes = " + INVOKEINVOKECOUNT); //$NON-NLS-1$
- System.out.println(".................................................."); //$NON-NLS-1$
- System.out.println("Methods retrieved = " + REMMETHODCOUNT + "(" + UNIQUEMETHODCOUNT + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- System.out.println("Invokes retrieved = " + REMINVOKABLECOUNT + "(" + UNIQUEINVOKABLECOUNT + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- System.out.println("Fields retrieved = " + REMFIELDCOUNT + "(" + UNIQUEFIELDCOUNT + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- System.out.println("Constructor calls = " + REMCONSTRUCTORCALLED); //$NON-NLS-1$
- System.out.println("--------------------------------------------------"); //$NON-NLS-1$
- System.out.println("-Count of methods invoked-------------------------"); //$NON-NLS-1$
- System.out.println("--------------------------------------------------"); //$NON-NLS-1$
-
- // Collate the methods called
- Iterator entries = METHODCOUNTMAP.entrySet().iterator();
- while (entries.hasNext()) {
- Map.Entry entry = (Entry) entries.next();
- REMMethodProxy methodProxy = (REMMethodProxy) entry.getKey();
- System.out.println(methodProxy.getClassType().getTypeName() + "," + methodProxy.getName() + "," + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- System.out.println("--------------------------------------------------"); //$NON-NLS-1$
- System.out.println("-Count of fields get called ----------------------"); //$NON-NLS-1$
- System.out.println("--------------------------------------------------"); //$NON-NLS-1$
-
- // Collate the fields accessed
- entries = FIELDCOUNTMAP.entrySet().iterator();
- while (entries.hasNext()) {
- Map.Entry entry = (Entry) entries.next();
- REMFieldProxy fieldProxy = (REMFieldProxy) entry.getKey();
- System.out.println(fieldProxy.toBeanString() + "," + entry.getValue()); //$NON-NLS-1$
- }
-
- System.out.println("--------------------------------------------------"); //$NON-NLS-1$
- System.out.println("-Count of fields set called ----------------------"); //$NON-NLS-1$
- System.out.println("--------------------------------------------------"); //$NON-NLS-1$
-
- // Collate the fields set
- entries = FIELDSETCOUNTMAP.entrySet().iterator();
- while (entries.hasNext()) {
- Map.Entry entry = (Entry) entries.next();
- REMFieldProxy fieldProxy = (REMFieldProxy) entry.getKey();
- System.out.println(fieldProxy.toBeanString() + "," + entry.getValue()); //$NON-NLS-1$
- }
- }
-
- }
-
-/**
- * @param aBeanTypeProxy = BeanTypeProxy for the method
- * @param methodName = methodName to be looked for
- * @param parmTypes = array of qualified type names for the method arguments, null if no methods
- */
- public IMethodProxy getMethodProxy(IBeanTypeProxy aBeanTypeProxy, String methodName, String[] parmTypes){
- if (!registry.isValid())
- return null;
-
- REMMETHODCOUNT++;
- Map methods;
- Object key;
- synchronized (this) {
- // The classCache map is keyed by the BeanTypeProxy and holds a further map of cache'd methods
- methods = getMethods(aBeanTypeProxy);
-
- // The syntax of the key is methodName(parmType1,parmType2)
- if (parmTypes == null || parmTypes.length == 0) {
- key = methodName;
- } else {
- key = new MethodKeyStringParms(methodName, parmTypes);
- }
-
- IMethodProxy result = (IMethodProxy) methods.get(key);
- if (result != null)
- return result;
- }
-
- UNIQUEMETHODCOUNT++;
- // Get the method proxy and cache this before returning it
- // Get the method proxy and cache this before returning it
- REMMethodProxyFactory proxyFactory = (REMMethodProxyFactory) registry.getMethodProxyFactory();
- IMethodProxy result = proxyFactory.getMethodProxy((IREMBeanTypeProxy)aBeanTypeProxy,methodName,parmTypes);
- synchronized (this) {
- // Get it again to make sure it hasn't changed due to a race condition. We don't sync for the getMethodProxy because that goes to the remote vm and could deadlock.
- IMethodProxy mValue = (IMethodProxy) methods.get(key);
- if (mValue != null && mValue != result) {
- registry.releaseProxy(result); // Don't need the result now, got it through a race condition.
- return mValue; // We have a real value now.
- }
- methods.put(key, result);
- }
- return result;
- }
-/**
- * @param aBeanTypeProxy
- * @return Map of cache'd methods
- */
-private Map getMethods(IProxyBeanType aBeanTypeProxy) {
- Map methods = (Map) methodsCache.get(aBeanTypeProxy.getTypeName());
- if(methods == null){
- methods = new HashMap(20);
- methodsCache.put(aBeanTypeProxy.getTypeName(),methods);
- }
- return methods;
-}
-/**
- * @param aBeanTypeProxy
- * @return Map of cache'd invokables
- */
-private Map getInvokables(IBeanTypeProxy aBeanTypeProxy) {
- Map invokables = (Map) invokablesCache.get(aBeanTypeProxy);
- if(invokables == null){
- invokables = new HashMap(20);
- invokablesCache.put(aBeanTypeProxy,invokables);
- }
- return invokables;
-}
-/**
- * @param aBeanTypeProxy
- * @return Map of cache'd fields
- */
-private Map getFields(IProxyBeanType aBeanTypeProxy) {
- Map fields = (Map) fieldsCache.get(aBeanTypeProxy.getTypeName());
- if(fields == null){
- fields = new HashMap(20);
- fieldsCache.put(aBeanTypeProxy.getTypeName(),fields);
- }
- return fields;
-}
-/**
- * @param aBeanTypeProxy = BeanTypeProxy for the method
- * @param methodName = methodName to be looked for
- * @param parmTypes = array of qualified type names for the method arguments, null if no arguments
- */
- public IInvokable getInvokable(IBeanTypeProxy aBeanTypeProxy, String invokableName, String[] parmTypeNames){
-
- REMINVOKABLECOUNT++;
- // The classCache map is keyed by the BeanTypeProxy and holds a further map of cache'd methods
- Map invokables = getInvokables(aBeanTypeProxy);
-
- Object key = null;
- if(parmTypeNames == null || parmTypeNames.length == 0){
- key = invokableName;
- } else {
- key = new MethodKeyStringParms(invokableName, parmTypeNames);
- }
-
- IInvokable result = (IInvokable) invokables.get(key);
- if(result != null) return result;
-
- UNIQUEINVOKABLECOUNT++;
- // Get the method proxy and cache this before returning it
- // Get the method proxy and cache this before returning it
- REMMethodProxyFactory proxyFactory = (REMMethodProxyFactory) aBeanTypeProxy.getProxyFactoryRegistry().getMethodProxyFactory();
- result = proxyFactory.getInvokable((IREMBeanTypeProxy)aBeanTypeProxy,invokableName,parmTypeNames);
- invokables.put(key,result);
- return result;
-
- }
- /**
- * @param aBeanTypeProxy = BeanTypeProxy for the method
- * @param methodName = methodName to be looked for
- * @param parmTypes = array of IBeanTypeProxy types for the method arguments, null if no arguments
- */
- public IInvokable getInvokable(IBeanTypeProxy aBeanTypeProxy, String invokableName, IBeanTypeProxy[] parmTypes){
-
- REMINVOKABLECOUNT++;
- // The classCache map is keyed by the BeanTypeProxy and holds a further map of cache'd methods
- Map invokables = getInvokables(aBeanTypeProxy);
-
- Object key = null;
- if(parmTypes == null || parmTypes.length == 0){
- key = invokableName;
- } else {
- key = new MethodKeyProxyParms(invokableName, parmTypes);
- }
-
- IInvokable result = (IInvokable) invokables.get(key);
- if(result != null) return result;
-
- UNIQUEINVOKABLECOUNT++;
- // Get the method proxy and cache this before returning it
- // Get the method proxy and cache this before returning it
- REMMethodProxyFactory proxyFactory = (REMMethodProxyFactory) aBeanTypeProxy.getProxyFactoryRegistry().getMethodProxyFactory();
- result = proxyFactory.getInvokable((IREMBeanTypeProxy)aBeanTypeProxy,invokableName,parmTypes);
- invokables.put(key,result);
- return result;
-
- }
-/**
- * @param aBeanTypeProxy = BeanTypeProxy for the method
- * @param methodName = methodName to be looked for
- * @param parmTypes = array of qualified type names for the method arguments, null if no methods
- */
- public IMethodProxy getMethodProxy(IBeanTypeProxy aBeanTypeProxy, String methodName, IBeanTypeProxy[] parmTypes){
- if (!registry.isValid())
- return null;
-
- REMMETHODCOUNT++;
- // The classCache map is keyed by the BeanTypeProxy and holds a further map of cache'd methods
- Map methods;
- Object key;
- synchronized (this) {
- methods = getMethods(aBeanTypeProxy);
-
- key = null;
- if (parmTypes == null || parmTypes.length == 0) {
- key = methodName;
- } else {
- key = new MethodKeyProxyParms(methodName, parmTypes);
- }
-
- IMethodProxy result = (IMethodProxy) methods.get(key);
- if (result != null)
- return result;
- }
-
- UNIQUEMETHODCOUNT++;
- // Get the method proxy and cache this before returning it
- // Get the method proxy and cache this before returning it
- REMMethodProxyFactory proxyFactory = (REMMethodProxyFactory) registry.getMethodProxyFactory();
- IMethodProxy result = proxyFactory.getMethodProxy((IREMBeanTypeProxy)aBeanTypeProxy,methodName,parmTypes);
- synchronized (this) {
- // Get it again to make sure it hasn't changed due to a race condition. We don't sync for the getMethodProxy because that goes to the remote vm and could deadlock.
- IMethodProxy mValue = (IMethodProxy) methods.get(key);
- if (mValue != null && mValue != result) {
- registry.releaseProxy(result); // Don't need result now, got it already through a race condition.
- return mValue; // We have a real value now.
- }
- methods.put(key, result);
- }
-
- return result;
- }
-
- /**
- * Return the proxy method for the method through the expression.
- * @param expression
- * @param aBeanTypeProxy
- * @param methodName
- * @param parmTypes
- * @return either the IMethodProxy if already resolved or an ExpressionProxy if not yet resolved.
- *
- * @since 1.1.0
- */
- public IProxyMethod getMethodProxy(IExpression expression, IProxyBeanType aBeanTypeProxy, String methodName, IProxyBeanType[] parmTypes){
- if (!registry.isValid())
- return null;
-
- REMMETHODCOUNT++;
- Map methods;
- Map epMethods;
- Object key;
- boolean isKey;
- synchronized (this) {
- // The classCache map is keyed by the BeanTypeProxy name and holds a further map of cache'd methods
- methods = getMethods(aBeanTypeProxy);
-
- if (parmTypes == null || parmTypes.length == 0) {
- key = methodName;
- isKey = false;
- } else {
- key = new MethodKeyProxyParms(methodName, parmTypes);
- isKey = true;
- }
-
- IProxyMethod result = (IProxyMethod) methods.get(key);
- if (result != null)
- return result;
-
- // See if stored in the expression.
- epMethods = ((REMExpression) expression).getMethods(aBeanTypeProxy);
- result = (IProxyMethod) epMethods.get(key);
- if (result != null)
- return result;
- }
-
- UNIQUEMETHODCOUNT++;
- // Get the method expression proxy and cache this before returning it
- IProxyMethod result = ((Expression) expression).createMethodExpressionProxy(aBeanTypeProxy,methodName,parmTypes);
- epMethods.put(key, result);
- final Object epKey = key;
- final Map rMethods = methods;
- final Map fepMethods = epMethods;
- final boolean isKeyType = isKey;
- ((ExpressionProxy) result).addProxyListener(new ExpressionProxy.ProxyAdapter() {
- public void proxyResolved(ProxyEvent event) {
- synchronized (REMProxyConstants.this) {
- if (rMethods.containsKey(epKey))
- return; // We already have a true method proxy in there. A race condition occurred.
-
- // Now put this resolved guy into the methods.
- // We don't want the key to contain expression proxies in the final map, so if it is a key type
- // we will turn it into a string type key.
- Object key;
- if (isKeyType) {
- key = ((MethodKeyProxyParms) epKey).toMethodKeyStringParms(); // So that we don't put a ket that contains expression proxy parm types into the main map.
- } else
- key = epKey;
-
- rMethods.put(key, event.getProxy());
- }
- }
-
- public void proxyNotResolved(ExpressionProxy.ProxyEvent event) {
- synchronized (REMProxyConstants.this) {
- fepMethods.remove(epKey);
- }
- }
-
- });
- return result;
- }
-
- /**
- * @param proxy
- */
- static void methodInvoked(REMMethodProxy proxy) {
-
- if (GATHER_COUNTS) {
- Integer count = (Integer) METHODCOUNTMAP.get(proxy);
- if (count == null) {
- METHODCOUNTMAP.put(proxy, new Integer(1));
- } else {
- METHODCOUNTMAP.put(proxy, new Integer(count.intValue() + 1));
- }
- }
- }
-
- static void fieldGetInvoked(IBeanProxy proxy) {
-
- if (GATHER_COUNTS) {
- Integer count = (Integer) FIELDCOUNTMAP.get(proxy);
- if (count == null) {
- FIELDCOUNTMAP.put(proxy, new Integer(1));
- } else {
- FIELDCOUNTMAP.put(proxy, new Integer(count.intValue() + 1));
- }
- }
- }
-
- static void fieldSetInvoked(IBeanProxy proxy, IBeanProxy value) {
-
- if (GATHER_COUNTS) {
- Integer count = (Integer) FIELDSETCOUNTMAP.get(proxy);
- if (count == null) {
- FIELDSETCOUNTMAP.put(proxy, new Integer(1));
- } else {
- FIELDSETCOUNTMAP.put(proxy, new Integer(count.intValue() + 1));
- }
- }
- }
-
- /**
- * @param proxy for the BeanType of the field
- * @param fieldName of the field, e.g. (java.awt.Dimension, width) for the "width" field on Dimension
- * @return The field proxy that is cache'd for performance
- */
- public IFieldProxy getFieldProxy(REMAbstractBeanTypeProxy aBeanTypeProxy, String fieldName) {
- if (!registry.isValid())
- return null;
-
- REMFIELDCOUNT++;
- Map fields;
- synchronized (this) {
- // The field map is keyed by the BeanTypeProxy and holds a further map of cache'd fields
- fields = getFields(aBeanTypeProxy);
-
- // Lookup the cache'd Field proxy
- IFieldProxy result = (IFieldProxy) fields.get(fieldName);
- if (result != null)
- return result;
- }
-
- UNIQUEFIELDCOUNT++;
- IFieldProxy result = (IFieldProxy) REMStandardBeanProxyConstants.getConstants(aBeanTypeProxy.getProxyFactoryRegistry()).getClassGetField().invokeCatchThrowableExceptions(
- aBeanTypeProxy,
- registry.getBeanProxyFactory().createBeanProxyWith(fieldName));
- synchronized (this) {
- IFieldProxy fValue = (IFieldProxy) fields.get(fieldName);
- if (fValue != null) {
- registry.releaseProxy(result); // Don't need it now. A race had put another one in.
- return fValue;
- }
- fields.put(fieldName,result);
- }
- return result;
- }
-
- public IProxyField getFieldProxy(IExpression expression, IProxyBeanType aBeanTypeProxy, final String fieldName){
- if (!registry.isValid())
- return null;
-
- REMFIELDCOUNT++;
- Map fields;
- Map epFields;
- synchronized (this) {
- // The classCache map is keyed by the BeanTypeProxy name and holds a further map of cache'd methods
- fields = getFields(aBeanTypeProxy);
-
- IProxyField result = (IProxyField) fields.get(fieldName);
- if (result != null)
- return result;
-
- // See if stored in the expression.
- epFields = ((REMExpression) expression).getFields(aBeanTypeProxy);
- result = (IProxyField) epFields.get(fieldName);
- if (result != null)
- return result;
- }
-
- UNIQUEFIELDCOUNT++;
- // Get the field expression proxy and cache this before returning it
- IProxyField result = ((REMExpression) expression).createFieldExpressionProxy(aBeanTypeProxy, fieldName);
- epFields.put(fieldName, result);
- final Map fpFields = fields;
- final Map fepFields = epFields;
- ((ExpressionProxy) result).addProxyListener(new ExpressionProxy.ProxyAdapter() {
-
- public void proxyResolved(ProxyEvent event) {
- synchronized (REMProxyConstants.this) {
- if (fpFields.containsKey(fieldName))
- return; // Already set to resolved value by someone else.
- fpFields.put(fieldName, event.getProxy());
- }
- }
- public void proxyNotResolved(ExpressionProxy.ProxyEvent event) {
- synchronized (REMProxyConstants.this) {
- fepFields.remove(fieldName);
- }
- }
- });
-
- return result;
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyFactoryRegistry.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyFactoryRegistry.java
deleted file mode 100644
index db1e31ed3..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMProxyFactoryRegistry.java
+++ /dev/null
@@ -1,476 +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.remote;
-/*
-
-
- */
-
-
-import java.io.IOException;
-import java.net.Socket;
-import java.text.MessageFormat;
-import java.util.Iterator;
-import java.util.Stack;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.IJobManager;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.*;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.IStreamsProxy;
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * This is the factory registry to use for Remote VM.
- * It adds to the standard registry, connection specific information.
- *
- * This will always hold onto one connection open until termination is requested.
- * That way while the IDE is up, the remove vm won't time out.
- */
-
-public class REMProxyFactoryRegistry extends BaseProxyFactoryRegistry {
-
- public static final String REMOTE_REGISTRY_TYPE_ID = "org.eclipse.jem.REMOTE"; //$NON-NLS-1$
-
- protected int fServerPort = 0; // The server port to use when making connections.
- protected REMCallbackRegistry fCallbackServer; // The callback server thread for this remote vm.
- protected Stack fConnectionPool = new Stack(); // Stack of free connections.
- protected static int NUMBER_FREE_CONNECTIONS = 5; // Number of free connections to keep open.
- protected IProcess fProcess; // The process that is the server. If null and fServerPort is not zero,
- // then this registry is in test mode
- // and the server is in same the process.
- protected String fName;
- protected int fCallbackServerPort;
- protected Integer fRegistryKey;
- protected REMRegistryController fRegistryController;
-
- protected final static Object TERMINATE_JOB_FAMILY = new Object();
-
- // Package protected because only the ProxyVMStarter should set this flag. It would set it if
- // working with a debugger because we don't how long it will be to respond to requests when
- // someone is working with a debugger.
- boolean fNoTimeouts = false;
-
- // This is set via the static setGlobalNoTimeouts() method, or via debug options flag. It is here so that
- // when debugging callbacks, but not debugging remote vm, that no timeouts for any registry will occur.
- // Or it can be set through the debug .options flag.
- static boolean fGlobalNoTimeouts = "true".equalsIgnoreCase(Platform.getDebugOption(ProxyPlugin.getPlugin().getBundle().getSymbolicName()+ProxyRemoteUtil.NO_TIMEOUTS)); //$NON-NLS-1$;
-
- /**
- * Typicall set through the "expression" evaluation of the debugger.
- * @param noTimeouts
- *
- * @since 1.0.0
- */
- public static void setGlobalNoTimeouts(boolean noTimeouts) {
- fGlobalNoTimeouts = noTimeouts;
- }
-
- // An internal thread that locks and waits for the remote vm to register itself.
- private WaitForRegistrationThread waitRegistrationThread;
-
- private class WaitForRegistrationThread extends Thread {
- public WaitForRegistrationThread() {
- super("Wait for remote vm registration thread"); //$NON-NLS-1$
- }
-
- /**
- * @see java.lang.Thread#run()
- */
- public void run() {
- // Wait for registration. Put it into a thread so this
- // can occur while other stuff goes on. It locks the fConnectionPool
- // until done so that the first request for a connection by anyone
- // else will wait until this thread is finished.
-
- synchronized(fConnectionPool) {
- synchronized(REMProxyFactoryRegistry.this) {
- // Notify the main thread that we have the
- // connection pool locked.
- REMProxyFactoryRegistry.this.notifyAll();
- }
- synchronized (this) {
- // sync on self so that it can be notified when finally receive the registration
- long stopTime = System.currentTimeMillis()+60000;
- while (waitRegistrationThread != null && (fNoTimeouts || System.currentTimeMillis() < stopTime)) {
- try {
- Thread.currentThread().wait(60000);
- } catch (InterruptedException e) {
- }
- }
- }
- }
-
- waitRegistrationThread = null; // No longer exists.
- }
- }
-
-
- public REMProxyFactoryRegistry(REMRegistryController registryController, String name) {
- super(REMOTE_REGISTRY_TYPE_ID);
- fRegistryController = registryController;
- fRegistryKey = fRegistryController.registerRegistry(this); // Register the registry with the plugin.
- fName = name;
-
- // Get the waitRegistrationThread started before we actually launch remote vm so
- // that it is waiting when the callback comes in.
- synchronized (this) {
- waitRegistrationThread = new WaitForRegistrationThread();
- waitRegistrationThread.start();
-
- // Now we will wait until the registration callback has been done. The thread will
- // signal us when that is done. This is so that we don't continue on and let
- // a work connection be requested before we even got a chance to start waiting
- // for the registration.
- while(true) {
- try {
- wait();
- break;
- } catch (InterruptedException e) {
- }
- };
- }
- }
-
- public Integer getRegistryKey() {
- return fRegistryKey;
- }
-
- public void initializeRegistry(IProcess process) {
- fProcess = process;
- processListener = new IDebugEventSetListener() {
- /**
- * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(DebugEvent[])
- */
- public void handleDebugEvents(DebugEvent[] events) {
- for (int i = 0; i < events.length; i++) {
- DebugEvent e = events[i];
- if (e.getSource() == fProcess && e.getKind() == DebugEvent.TERMINATE) {
- // We terminating too soon. Pop up a msg.
- IStreamsProxy stProxy = fProcess.getStreamsProxy();
- java.io.StringWriter s = new java.io.StringWriter();
- java.io.PrintWriter w = new java.io.PrintWriter(s);
-
- String msg = MessageFormat.format(ProxyRemoteMessages.Proxy_Terminated_too_soon_ERROR_, new Object[] {fName});
- w.println(msg);
- w.println(ProxyRemoteMessages.VM_TERMINATED_INFO_);
- w.println(ProxyRemoteMessages.VM_COMMAND_LINE);
- w.println(fProcess.getAttribute(IProcess.ATTR_CMDLINE));
- w.println(ProxyRemoteMessages.VM_TERMINATED_LINE1);
- w.println(stProxy.getErrorStreamMonitor().getContents());
- w.println(ProxyRemoteMessages.VM_TERMINATED_LINE2);
- w.println(stProxy.getOutputStreamMonitor().getContents());
- w.println(ProxyRemoteMessages.VM_TERMINATED_LINE3);
- w.close();
-
- DebugModeHelper dh = new DebugModeHelper();
- dh.displayErrorMessage(ProxyRemoteMessages.Proxy_Error_Title, msg);
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, s.toString(), null));
- processListener = null;
- DebugPlugin.getDefault().removeDebugEventListener(this);
- terminateRegistry();
- break;
- }
- }
- }
- };
-
- DebugPlugin.getDefault().addDebugEventListener(processListener);
- }
-
- private IDebugEventSetListener processListener = null;
-
- /**
- * Get the CallbackRegistry
- */
- public ICallbackRegistry getCallbackRegistry() {
- if (fCallbackServer == null)
- fCallbackServer = new REMCallbackRegistry(fName, this);
- return fCallbackServer;
- }
-
- /**
- * This is called by the registry controller to tell
- * the registry to terminate with prejudice all
- * pending TerminateJobs.
- *
- *
- * @since 1.1.0
- */
- public static void cancelAllTerminateJobs() {
- IJobManager jobManager = Job.getJobManager();
- jobManager.cancel(TERMINATE_JOB_FAMILY);
- try {
- jobManager.join(TERMINATE_JOB_FAMILY, null);
- } catch (OperationCanceledException e) {
- } catch (InterruptedException e) {
- }
- }
-
- private static class TerminateProcess extends Job {
- private IProcess process;
-
- public TerminateProcess(IProcess process) {
- super(ProxyRemoteMessages.REMProxyFactoryRegistry_Job_TerminateProcess_Title);
- this.process = process;
- }
-
- public boolean belongsTo(Object family) {
- return family == TERMINATE_JOB_FAMILY || super.belongsTo(family);
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Thread#run()
- */
- public IStatus run(IProgressMonitor mon) {
- try {
- // There is no join on a process available, so we will have to
- // busy wait. Give it 10 seconds in 1/10 second intervals.
- for (int i=0; !process.isTerminated() && i<100; i++) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- }
- }
- if (!process.isTerminated()) {
- process.terminate();
- }
- } catch (DebugException e) {
- }
- return Status.OK_STATUS;
- }
- }
-
- protected void registryTerminated(boolean wait) {
- if (processListener != null) {
- // Remove listener cause we are now going to terminate process and don't want premature terminate notice.
- // Sometimes in shutdown we are called and the debug plugin may of already been shutdown. In that case the db
- // will be null and there is nothing remove listener from.
- DebugPlugin db = DebugPlugin.getDefault();
- if (db != null)
- db.removeDebugEventListener(processListener);
- processListener = null;
- }
-
- Job tjob = null;
- if (waitRegistrationThread != null) {
- synchronized (waitRegistrationThread) {
- // Still waiting. close it out.
- WaitForRegistrationThread wThread = waitRegistrationThread;
- waitRegistrationThread = null;
- wThread.notifyAll();
- }
- }
- if (fServerPort != 0) {
- IREMConnection closeCon = null; // The connection we will use to close the remote vm.
- synchronized(fConnectionPool) {
- // Now we walk through all of the free connections and close them properly.
- Iterator itr = fConnectionPool.iterator();
- if (itr.hasNext())
- closeCon = (IREMConnection) itr.next();
- while (itr.hasNext()) {
- IREMConnection con = (IREMConnection) itr.next();
- con.close();
- }
- }
-
- // Now we terminate the server.
- if (closeCon == null)
- try {
- closeCon = getFreeConnection(); // There weren't any free connections, so get a new one so that we can close it.
- } catch (IllegalStateException e) {
- // Do nothing, don't want to stop termination just because we can't get a connection.
- }
- if (closeCon != null) {
- closeCon.terminateServer(); // We got a connection to terminate (process may of terminated early, so we would not have a conn then).
- }
- fConnectionPool.clear();
- fServerPort = 0;
-
- if (fProcess != null && !fRegistryController.inShutDown()) {
- tjob = new TerminateProcess(fProcess);
- tjob.setSystem(true);
- tjob.schedule();
- fProcess = null;
- }
- }
-
- if (fCallbackServer != null) {
- fCallbackServer.requestShutdown();
- fCallbackServer = null;
- }
-
- fConnectionPool.clear();
- fRegistryController.deregisterRegistry(fRegistryKey); // De-register this registry.
-
- if (wait && tjob != null) {
- try {
- tjob.join();
- } catch (InterruptedException e) {
- // It timed out, so we'll just go on.
- }
- }
- }
-
- /**
- * Return the server port number.
- */
- public int getServerPort() {
- return fServerPort;
- }
-
- /*
- * set the server port.
- */
- void setServerPort(int serverport) {
- fServerPort = serverport;
- if (waitRegistrationThread != null) {
- synchronized (waitRegistrationThread) {
- // Close it out, we are now registered
- WaitForRegistrationThread wThread = waitRegistrationThread;
- waitRegistrationThread = null;
- wThread.notifyAll();
- }
- }
- }
-
- /**
- * Get a free connection
- * @return
- * @throws IllegalStateException - Thrown if a connection cannot be created.
- *
- * @since 1.0.0
- */
- public IREMConnection getFreeConnection() throws IllegalStateException {
- Thread thread = Thread.currentThread();
- if (thread instanceof REMCallbackThread) {
- // The current thread is a call back thread, so just reuse the connection.
- // But this thread could actually be trying to access another registry.
- // So if this thread is for this registry, use it, if not for this registry, create a new connection.
- // But if for this registry AND is already in a transaction, we need a fresh connection.
- REMCallbackThread callbackThread = (REMCallbackThread) thread;
- if (callbackThread.registry == this && !callbackThread.inTransaction()) {
- // This way any calls out to the remote vm will be on same thread as callback caller
- // on remote vm because that thread is waiting on this connection for commands.
- IREMConnection c = (callbackThread).getConnection();
- if (c.isConnected())
- return c;
- else
- throw new IllegalStateException(ProxyRemoteMessages.REMProxyFactoryRegistry_CallbackConnectionNotWorking_EXC_);
- }
- }
- synchronized(fConnectionPool) {
- if (!fConnectionPool.isEmpty())
- return (IREMConnection) fConnectionPool.pop();
- // else we need to allocate one.
- return createConnection();
- }
- }
-
-
- /**
- * Make a new connection.
- * @return
- * @throws IllegalStateException - Thrown if connection cannot be created.
- *
- * @since 1.0.0
- */
- protected IREMConnection createConnection() throws IllegalStateException {
- // If we have a server port, then the server is probably open. If we don't then there is no server.
- if (fServerPort != 0) {
- // We are putting it off into a thread because there are no timeout capabilities on getting a socket.
- // So we need to allow for that.
- final Socket[] scArray = new Socket[1];
- final boolean[] waiting = new boolean[] {true};
- Thread doIt = new Thread(new Runnable() {
- public void run() {
- try {
- Socket sc = new Socket("localhost", fServerPort); //$NON-NLS-1$
- synchronized (this) {
- if (waiting[0])
- scArray[0] = sc;
- else
- sc.close(); // We are no longer waiting on this thread so close the socket since no one will use it.
- }
- } catch (IOException e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- }
- }
- });
-
- doIt.start();
- while (true) {
- try {
- doIt.join(!fNoTimeouts ? 60000 : 0);
- synchronized (doIt) {
- waiting[0] = false; // To let it know we are no longer waiting
- }
- break;
- } catch (InterruptedException e) {
- }
- }
-
- if (scArray[0] == null) {
- // Log where we are at so we can know where it was we down.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", new IllegalStateException(ProxyRemoteMessages.REMProxyFactoryRegistry_ConnectionCreationFailed_INFO_))); //$NON-NLS-1$
- throw new IllegalStateException(ProxyRemoteMessages.REMProxyFactoryRegistry_CouldNotCreateSocketConnectionToRemoteVM_EXC_); // Couldn't get one, probably server is down. //$NON-NLS-1$
- }
-
- REMConnection connection = new REMConnection(scArray[0], fNoTimeouts);
- if (connection.isConnected())
- return connection;
-
- // Failed, close the socket.
- try {
- scArray[0].close();
- } catch (IOException e) {
- }
- } else
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "No Server to retrieve a connection.", null)); ///$NON-NLS-1$
-
- throw new IllegalStateException(ProxyRemoteMessages.REMProxyFactoryRegistry_CouldNotCreateSocketConnectionToRemoteVM_EXC_);
- }
-
- /**
- * Free the connection
- */
- public void returnConnection(IREMConnection connection) {
- if (connection.isConnected()) {
- Thread thread = Thread.currentThread();
- if (!(thread instanceof REMCallbackThread) || ((REMCallbackThread) thread).getConnection() != connection) {
- // We are not a callback thread, or we are but the connection is not for the thread, then the connection
- // can be returned.
- synchronized (fConnectionPool) {
- if (fConnectionPool.size() < NUMBER_FREE_CONNECTIONS)
- fConnectionPool.push(connection);
- else
- connection.close(); // We don't need to maintain more than five free connections.
- }
- }
- }
- }
-
- /**
- * Release this connection. This means close it out.
- */
- public void closeConnection(IREMConnection connection) {
- connection.close();
- }
-
-
- public int connectionCount() {
- synchronized (fConnectionPool) {
- return fConnectionPool.size();
- }
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMRegistryController.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMRegistryController.java
deleted file mode 100644
index 8405d6fc5..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMRegistryController.java
+++ /dev/null
@@ -1,198 +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.remote;
-/*
-
-
- */
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.jobs.Job;
-
-import org.eclipse.jem.internal.proxy.core.ProxyPlugin;
-
-/**
- * This class is a controller for all of the registries.
- * @author richkulp
- */
-public class REMRegistryController {
-
- private Map fActiveRegistries = new HashMap(); // Access to this must be sync(REMRegistryController)
- private static final long CLEANUP_INTERVAL = 60000l; // The interval between clean up job execution.
-
- protected boolean inShutdown; // Are we in shutdown mode. Terminate registries runs differently in shutdown mode.
-
- // Thread to clean up GC'd proxies. Runs as a daemon at the lowest priority
- private Job processQueueJob= new Job(ProxyRemoteMessages.CleanupJob_title) {
- public IStatus run(IProgressMonitor m) {
- REMProxyFactoryRegistry[] registries = null;
- synchronized (REMRegistryController.this) {
- // This list may be updated by others, so we need to make a copy
- // or else we could get a failure.
- registries =
- (REMProxyFactoryRegistry[]) fActiveRegistries.values().toArray(
- new REMProxyFactoryRegistry[fActiveRegistries.size()]);
- }
- for (int i = 0; i < registries.length; i++) {
- try {
- ((REMStandardBeanProxyFactory) registries[i].getBeanProxyFactory()).processQueue();
- } catch (RuntimeException e) {
- // When debugging, getBeanProxyFactory can throw exception because it hasn't been initialized
- // yet when the thread wakes up, though the registry has been registered. It has to do with it
- // can take significant time for the user to start up the debugger, and during that time this
- // thread could kick in.
- }
- }
- synchronized(this) {
- if (!m.isCanceled())
- this.schedule(CLEANUP_INTERVAL); // Schedule to start again in one minute.
- }
- return Status.OK_STATUS;
- }
-
- }; //$NON-NLS-1$
-
- public REMRegistryController() {
-
- ProxyPlugin.getPlugin().addProxyShutdownListener(new ProxyPlugin.IProxyPluginShutdownListener() {
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.ProxyPlugin.IProxyPluginShutdownListener#shutdown()
- */
- public void shutdown() {
- REMRegistryController.this.shutdown();
- }
- });
-
- masterThread = new REMMasterServerThread(this);
- masterThread.start();
-
- processQueueJob.setSystem(true); // So that it won't show processing in process view. Not of interest to general users.
- processQueueJob.setPriority(Job.SHORT);
- processQueueJob.schedule(CLEANUP_INTERVAL);
-
- }
-
- /**
- * Answer whether we are shutting down or not.
- * @return
- *
- * @since 1.1.0
- */
- public boolean inShutDown() {
- return inShutdown;
- }
-
- /*
- * Add registry to list of active. Return a unique number to be the key.
- * Package-protected so that only locals can access it.
- */
- synchronized Integer registerRegistry(REMProxyFactoryRegistry registry) {
-
- Integer hashcode = new Integer(registry.hashCode());
- while (true) {
- REMProxyFactoryRegistry existing = (REMProxyFactoryRegistry) fActiveRegistries.get(hashcode);
- if (existing == null)
- break; // Not yet registered, use use the hashcode
- else if (existing != registry)
- hashcode = new Integer(hashcode.intValue()+1);
- else
- return hashcode; // Same guy, use the hashcode.
- }
-
- fActiveRegistries.put(hashcode, registry);
- return hashcode;
- }
-
- /*
- * deregister the registry.
- */
- synchronized void deregisterRegistry(Integer key) {
- fActiveRegistries.remove(key);
- }
-
- /*
- * Return the registry for the given key
- */
- synchronized REMProxyFactoryRegistry getRegistry(Integer key) {
- return (REMProxyFactoryRegistry) fActiveRegistries.get(key);
- }
-
- /**
- * Master server thread. Handles keep-alive requests and register remote server threads.
- * It will be created when needed.
- */
- protected REMMasterServerThread masterThread;
-
- /*
- * Shuts down this plug-in and discards all plug-in state.
- *
- * In this case, terminate all of the active registries so that they can be shutdown.
- * Don't want them hanging around after termination of the desktop.
- */
- void shutdown() {
-
- synchronized(processQueueJob) {
- processQueueJob.cancel();
- }
-
- REMProxyFactoryRegistry[] registries = null;
- synchronized (this) {
- // This list will be updated in the terminateRegistry, so we need to make a copy
- // or else we get a failure.
- registries =
- (REMProxyFactoryRegistry[]) fActiveRegistries.values().toArray(
- new REMProxyFactoryRegistry[fActiveRegistries.size()]);
- }
-
- inShutdown = true; // We are now in shutdown mode.
- // In shutdown mode the registries will not create the job that waits for the process
- // to terminate, and if it doesn't in 1.5 secs it does a force.
- // Instead what we will do is shutdown all of the registries. If they don't
- // shutdown on their own then they stay out there. But they do have an
- // internal timer that checks every five minutes to see if the host is
- // still there, and if it isn't they will shut themselves down. They
- // would have to be really hosed if the suicide timer wasn't working.
-
- for (int i = 0; i < registries.length; i++)
- registries[i].terminateRegistry();
-
- if (masterThread != null) {
- try {
- masterThread.requestShutdown();
- masterThread.join(20000); // Wait 20 seconds for everything to go down.
- masterThread = null;
- } catch (InterruptedException e) {
- }
- }
-
- try {
- processQueueJob.join();
- } catch(InterruptedException e) {
- }
-
- REMProxyFactoryRegistry.cancelAllTerminateJobs();
- }
-
- /**
- * Return the master socket port number.
- */
- public int getMasterSocketPort() {
- return masterThread != null ? masterThread.getMasterSocket().getLocalPort() : -1;
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanProxy.java
deleted file mode 100644
index 27ea767c6..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanProxy.java
+++ /dev/null
@@ -1,44 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Proxy for Short.class.
- */
-class REMShortClassBeanProxy extends REMNumberBeanProxy {
-
-REMShortClassBeanProxy(REMProxyFactoryRegistry aRegistry, Short aShort) {
- super(aRegistry, aShort);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).shortClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set((Short) numberValue());
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanTypeProxy.java
deleted file mode 100644
index d93e66fc8..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortClassBeanTypeProxy.java
+++ /dev/null
@@ -1,84 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Short.class.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMShortClassBeanTypeProxy extends REMAbstractNumberBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final INumberBeanProxy oneProxy;
- private final INumberBeanProxy twoProxy;
- private final INumberBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMShortClassBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy numberType) {
- super(aRegistry, new Integer(Commands.SHORT_CLASS), Short.class.getName(), numberType);
-
- // Create the cached values
- zeroProxy = new REMShortClassBeanProxy(aRegistry, new Short((short)0));
- oneProxy = new REMShortClassBeanProxy(aRegistry, new Short((short)1));
- twoProxy = new REMShortClassBeanProxy(aRegistry, new Short((short)2));
- threeProxy = new REMShortClassBeanProxy(aRegistry, new Short((short)3));
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createShortBeanProxy(Short aShort) {
- switch(aShort.shortValue()) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- default: return new REMShortClassBeanProxy(fRegistry, aShort);
- }
-}
-
-/**
- * Generic way to create a Short proxy, however, the Number must be a Short.
- */
-protected INumberBeanProxy createNumberBeanProxy(Number aNumber) {
- return createShortBeanProxy((Short) aNumber);
-}
-
-/**
- * newInstance method. Number's don't have a default ctor, so the standard way won't work.
- * Return the zero proxy for this case.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createShortBeanProxy(new Short(value.aShort));
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanProxy.java
deleted file mode 100644
index d2bc1e2d8..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanProxy.java
+++ /dev/null
@@ -1,132 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * Remote Implementation of INumberBeanProxy for the primitive "short".
- * It can answer all of the primitive number types (int, long, short, byte, double, float).
- * Creation date: (2/6/00 9:02:54 AM)
- * @author: Joe Winchester
- */
-class REMShortTypeBeanProxy extends REMConstantBeanProxy implements INumberBeanProxy {
- private final short fShort;
-
-/**
- * It is package protected because they are created
- * in a special way and no one else should create them.
- * @param aBean java.lang.Object
- */
-REMShortTypeBeanProxy(REMProxyFactoryRegistry aRegistry, short aShort) {
- super(aRegistry);
- fShort = aShort;
-}
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof REMShortTypeBeanProxy)
- return fShort == ((REMShortTypeBeanProxy) anObject).shortValue();
- if (anObject instanceof Short)
- return fShort == ((Short) anObject).shortValue();
- return false;
-}
-
-/* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
-public boolean sameAs(IBeanProxy aBeanProxy) {
- if (this == aBeanProxy)
- return true; // Identity
- if (aBeanProxy instanceof REMShortTypeBeanProxy)
- return fShort == ((REMShortTypeBeanProxy) aBeanProxy).shortValue();
- return false;
-}
-
-/**
- * byteValue method comment.
- */
-public byte byteValue() {
- return (byte) fShort;
-}
-/**
- * doubleValue method comment.
- */
-public double doubleValue() {
- return fShort;
-}
-/**
- * floatValue method comment.
- */
-public float floatValue() {
- return fShort;
-}
-/**
- * Return the int value
- */
-public int intValue() {
- return fShort;
-}
-/**
- * longValue method comment.
- */
-public long longValue() {
- return fShort;
-}
-/**
- * numberValue method comment.
- */
-public Number numberValue() {
- return new Short(fShort);
-}
-/**
- * shortValue method comment.
- */
-public short shortValue() {
- return fShort;
-}
-
-/**
- * The bean's toString.
- */
-public String toBeanString() {
- return String.valueOf(fShort);
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).shortType;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fShort);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanTypeProxy.java
deleted file mode 100644
index 8dbbd7f48..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMShortTypeBeanTypeProxy.java
+++ /dev/null
@@ -1,109 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * Remote Implementation of IBeanTypeProxy for Short.TYPE.
- * Creation date: (2/6/00 9:01:40 AM)
- * @author: Joe Winchester
- */
-final class REMShortTypeBeanTypeProxy extends REMPrimitiveBeanTypeProxy {
-// Some values are cache'd for speed
- private final INumberBeanProxy zeroProxy;
- private final INumberBeanProxy oneProxy;
- private final INumberBeanProxy twoProxy;
- private final INumberBeanProxy threeProxy;
-/**
- * REMIntegerBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMShortTypeBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.SHORT_TYPE), Short.TYPE.getName());
-
- // Create the cached values
- zeroProxy = new REMShortTypeBeanProxy(aRegistry, (short) 0);
- oneProxy = new REMShortTypeBeanProxy(aRegistry, (short) 1);
- twoProxy = new REMShortTypeBeanProxy(aRegistry, (short) 2);
- threeProxy = new REMShortTypeBeanProxy(aRegistry, (short) 3);
-}
-
-/**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
-INumberBeanProxy createShortBeanProxy(short aShort) {
- switch(aShort) {
- case 0: return zeroProxy;
- case 1: return oneProxy ;
- case 2: return twoProxy ;
- case 3: return threeProxy ;
- default: return new REMShortTypeBeanProxy(fRegistry, aShort);
- }
-}
-
-/**
- * newInstance method. short is a primitive, so the standard way won't work.
- * Return the zeroProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return zeroProxy;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createShortBeanProxy(value.aShort);
-}
-
-/**
- * Short cut for newInstance where the string follows the
- * specific pattern we expect. That way it won't be necessary to ship over to the vm
- * to process it.
- *
- * The pattern it can accept is:
- * 1) (short) validNumber - number can be any number because (byte) explicitly casts it down.
- * 2) validNumber
- * It will use the decode function of short to determine the valid number.
- */
-public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- String trim = initializationString.trim();
- if (trim.length() == 0)
- return super.newInstance(initializationString);
- short aShort;
- if (trim.startsWith("(short)")) { //$NON-NLS-1$
- Number v = parseString(trim.substring("(short)".length()).trim()); //$NON-NLS-1$
- if (v != null)
- aShort = v.shortValue();
- else
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- } else {
- try {
- aShort = Short.decode(trim).shortValue(); // See if valid short format.
- } catch (NumberFormatException e) {
- return super.newInstance(initializationString); // Can't decode it, let full parser handle it.
- }
- }
-
- return getProxyFactoryRegistry().getBeanProxyFactory().createBeanProxyWith(aShort);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyConstants.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyConstants.java
deleted file mode 100644
index 70faa919e..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyConstants.java
+++ /dev/null
@@ -1,514 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.IMethodProxy;
-import org.eclipse.jem.internal.proxy.core.ProxyFactoryRegistry;
-/**
- * REM Standard Proxy constants.
- *
- * Use the static accessor method (getConstants()) to get the appropriate
- * constants instance for the registry. This is done so that until the
- * the constants are needed, they aren't registered.
- *
- * There are some standard utility functions too.
- *
- * This is final because this can't be extended. This specific one
- * will be registered with the factory for this key. Any extensions
- * must be done in their own constants and registry key.
- *
- * Creation date: (4/7/00 4:47:48 PM)
- * @author: Administrator
- */
-public final class REMStandardBeanProxyConstants {
- public static final Object REGISTRY_KEY = new Object();
-
- private final ProxyFactoryRegistry fRegistry;
-
- private IMethodProxy fClassNewInstance;
- private IMethodProxy fClassGetField;
- private IMethodProxy fClassGetDeclaredField;
- private IMethodProxy fClassGetDeclaredFields;
- private IMethodProxy fClassGetFields;
- private IMethodProxy fClassGetConstructor;
- private IMethodProxy fClassGetConstructors;
- private IMethodProxy fClassGetDeclaredConstructor;
- private IMethodProxy fClassGetDeclaredConstructors;
- private IMethodProxy fClassGetMethods;
- private IMethodProxy fClassGetDeclaredMethods;
- private IMethodProxy fClassGetDeclaredMethod;
-
- private IMethodProxy fMethodHelperFindCompatibleConstructor;
- private IMethodProxy fMethodHelperFindCompatibleMethod;
-
- private IMethodProxy fClassIsAssignableFrom;
-
- private IMethodProxy fObjectToString;
- private IMethodProxy fObjectEquals;
-
- private IMethodProxy fThrowableLocalizedMessage;
- private IMethodProxy fThrowableMessage;
-
- private IMethodProxy fMethodDeclaringClassMessage;
- private IMethodProxy fMethodMethodNameMessage;
- private IMethodProxy fMethodParameterTypesMessage;
- private IMethodProxy fMethodReturnTypeMessage;
-
- private IMethodProxy fAccessibleIsAccessible;
- private IMethodProxy fAccessibleSetAccessible;
-
- private IMethodProxy fFieldGet;
- private IMethodProxy fFieldGetType;
- private IMethodProxy fFieldGetByte;
- private IMethodProxy fFieldGetBoolean;
- private IMethodProxy fFieldGetChar;
- private IMethodProxy fFieldGetDouble;
- private IMethodProxy fFieldGetFloat;
- private IMethodProxy fFieldGetInt;
- private IMethodProxy fFieldGetShort;
- private IMethodProxy fFieldGetLong;
- private IMethodProxy fFieldSet;
-
- private IMethodProxy fConstructorNewInstance;
- private IMethodProxy fConstructorParameterTypesMessage;
-
- private IMethodProxy fArrayNewInstanceOneDimension;
- private IMethodProxy fArrayNewInstanceMultiDimensions;
- private IMethodProxy fArrayGetLength;
- private IMethodProxy fArrayGet;
- private IMethodProxy fArrayGetByte;
- private IMethodProxy fArrayGetBoolean;
- private IMethodProxy fArrayGetChar;
- private IMethodProxy fArrayGetDouble;
- private IMethodProxy fArrayGetFloat;
- private IMethodProxy fArrayGetInt;
- private IMethodProxy fArrayGetShort;
- private IMethodProxy fArrayGetLong;
- private IMethodProxy fArraySet;
-
- private IMethodProxy fArrayHelperGet;
- private IMethodProxy fArrayHelperGetByte;
- private IMethodProxy fArrayHelperGetBoolean;
- private IMethodProxy fArrayHelperGetChar;
- private IMethodProxy fArrayHelperGetDouble;
- private IMethodProxy fArrayHelperGetFloat;
- private IMethodProxy fArrayHelperGetInt;
- private IMethodProxy fArrayHelperGetShort;
- private IMethodProxy fArrayHelperGetLong;
- private IMethodProxy fArrayHelperSet;
- private IMethodProxy fArrayHelperEquals;
-
-/**
- * Get the constants instance for the specified registry.
- */
-public static REMStandardBeanProxyConstants getConstants(ProxyFactoryRegistry registry) {
- REMStandardBeanProxyConstants constants = (REMStandardBeanProxyConstants) registry.getConstants(REGISTRY_KEY);
- if (constants == null)
- registry.registerConstants(REGISTRY_KEY, constants = new REMStandardBeanProxyConstants(registry));
- return constants;
-}
-
-
-private REMStandardBeanProxyConstants(ProxyFactoryRegistry registry) {
- super();
- fRegistry = registry;
-}
-
-public IMethodProxy getClassNewInstance() {
- // We actually need a special new instance because we want to be able to access outside of security. For our purposes security doesn't matter for construction.
- if (fClassNewInstance == null)
- fClassNewInstance = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ClassHelper", "newInstance", new String[] {"java.lang.Class"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fClassNewInstance;
-}
-
-public IMethodProxy getClassGetField() {
- if (fClassGetField == null)
- fClassGetField = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getField", new String[] {"java.lang.String"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fClassGetField;
-}
-
-public IMethodProxy getClassConstructor() {
- if (fClassGetConstructor == null)
- fClassGetConstructor = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getConstructor", new String[] {"[Ljava.lang.Class;"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fClassGetConstructor;
-}
-
-public IMethodProxy getClassConstructors() {
- if (fClassGetConstructors == null)
- fClassGetConstructors = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getConstructors", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fClassGetConstructors;
-}
-
-public IMethodProxy getDeclaredClassConstructor() {
- if (fClassGetDeclaredConstructor == null)
- fClassGetDeclaredConstructor = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getDeclaredConstructor", new String[] {"[Ljava.lang.Class;"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fClassGetDeclaredConstructor;
-}
-
-public IMethodProxy getDeclaredClassConstructors() {
- if (fClassGetDeclaredConstructors == null)
- fClassGetDeclaredConstructors = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getDeclaredConstructors", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fClassGetDeclaredConstructors;
-}
-
-public IMethodProxy getClassIsAssignableFrom() {
- if (fClassIsAssignableFrom == null)
- fClassIsAssignableFrom = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "isAssignableFrom", new String[] {"java.lang.Class"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fClassIsAssignableFrom;
-}
-
-public IMethodProxy getObjectToString() {
- if (fObjectToString == null)
- fObjectToString = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Object", "toString", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fObjectToString;
-}
-
-public IMethodProxy getObjectEquals() {
- if (fObjectEquals == null)
- fObjectEquals = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Object", "equals", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fObjectEquals;
-}
-public IMethodProxy getThrowableLocalizedMessage() {
- if (fThrowableLocalizedMessage == null)
- fThrowableLocalizedMessage = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Throwable", "getLocalizedMessage", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fThrowableLocalizedMessage;
-}
-
-public IMethodProxy getThrowableMessage() {
- if (fThrowableMessage == null)
- fThrowableMessage = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Throwable", "getMessage", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fThrowableMessage;
-}
-
-public IMethodProxy getMethodDeclaringClassMessage() {
- if (fMethodDeclaringClassMessage == null)
- fMethodDeclaringClassMessage = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Method", "getDeclaringClass", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fMethodDeclaringClassMessage;
-}
-
-public IMethodProxy getMethodMethodNameMessage() {
- if (fMethodMethodNameMessage == null)
- fMethodMethodNameMessage = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Method", "getName", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fMethodMethodNameMessage;
-}
-
-public IMethodProxy getMethodParameterTypesMessage() {
- if (fMethodParameterTypesMessage == null)
- fMethodParameterTypesMessage = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Method", "getParameterTypes", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fMethodParameterTypesMessage;
-}
-
-public IMethodProxy getMethodReturnTypeMessage() {
- if (fMethodReturnTypeMessage == null)
- fMethodReturnTypeMessage = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Method", "getReturnType", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fMethodReturnTypeMessage;
-}
-
-public IMethodProxy getAccessibleIsAccessible() {
- if (fAccessibleIsAccessible == null)
- fAccessibleIsAccessible = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.AccessibleObject", "isAccessible", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fAccessibleIsAccessible;
-}
-
-public IMethodProxy getAccessibleSetAccessible() {
- if (fAccessibleSetAccessible == null)
- fAccessibleSetAccessible = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.AccessibleObject", "setAccessible", new String[] {"boolean"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fAccessibleSetAccessible;
-}
-
-public IMethodProxy getFieldGetType() {
- if (fFieldGetType == null)
- fFieldGetType = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getType", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fFieldGetType;
-}
-
-public IMethodProxy getFieldGet() {
- if (fFieldGet == null)
- fFieldGet = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "get", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGet;
-}
-
-public IMethodProxy getFieldGetByte() {
- if (fFieldGetByte == null)
- fFieldGetByte = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getByte", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetByte;
-}
-
-public IMethodProxy getFieldGetBoolean() {
- if (fFieldGetBoolean == null)
- fFieldGetBoolean = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getBoolean", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetBoolean;
-}
-
-public IMethodProxy getFieldGetChar() {
- if (fFieldGetChar == null)
- fFieldGetChar = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getChar", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetChar;
-}
-
-public IMethodProxy getFieldGetDouble() {
- if (fFieldGetDouble == null)
- fFieldGetDouble = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getDouble", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetDouble;
-}
-
-public IMethodProxy getFieldGetFloat() {
- if (fFieldGetFloat == null)
- fFieldGetFloat = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getFloat", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetFloat;
-}
-
-public IMethodProxy getFieldGetInt() {
- if (fFieldGetInt == null)
- fFieldGetInt = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getInt", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetInt;
-}
-
-public IMethodProxy getFieldGetLong() {
- if (fFieldGetLong == null)
- fFieldGetLong = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getLong", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetLong;
-}
-
-public IMethodProxy getFieldGetShort() {
- if (fFieldGetShort == null)
- fFieldGetShort = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "getShort", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fFieldGetShort;
-}
-
-public IMethodProxy getFieldSet() {
- if (fFieldSet == null)
- fFieldSet = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Field", "set", new String[] {"java.lang.Object", "java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fFieldSet;
-}
-
-public IMethodProxy getConstructorNewInstance() {
- if (fConstructorNewInstance == null)
- fConstructorNewInstance = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Constructor", "newInstance", new String[] {"[Ljava.lang.Object;"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fConstructorNewInstance;
-}
-
-public IMethodProxy getConstructorParameterTypesMessage() {
- if (fConstructorParameterTypesMessage == null)
- fConstructorParameterTypesMessage = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Constructor", "getParameterTypes", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fConstructorParameterTypesMessage;
-}
-
-public IMethodProxy getArrayNewInstanceOneDimension() {
- if (fArrayNewInstanceOneDimension == null)
- fArrayNewInstanceOneDimension = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "newInstance", new String[] {"java.lang.Class", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayNewInstanceOneDimension;
-}
-
-public IMethodProxy getArrayNewInstanceMultiDimension() {
- if (fArrayNewInstanceMultiDimensions == null)
- fArrayNewInstanceMultiDimensions = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "newInstance", new String[] {"java.lang.Class", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayNewInstanceMultiDimensions;
-}
-
-public IMethodProxy getArrayGetLength() {
- if (fArrayGetLength == null)
- fArrayGetLength = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getLength", new String[] {"java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fArrayGetLength;
-}
-
-public IMethodProxy getArrayGet() {
- if (fArrayGet == null)
- fArrayGet = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "get", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGet;
-}
-
-public IMethodProxy getArrayGetByte() {
- if (fArrayGetByte == null)
- fArrayGetByte = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getByte", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetByte;
-}
-
-public IMethodProxy getArrayGetBoolean() {
- if (fArrayGetBoolean == null)
- fArrayGetBoolean = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getBoolean", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetBoolean;
-}
-
-public IMethodProxy getArrayGetChar() {
- if (fArrayGetChar == null)
- fArrayGetChar = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getChar", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetChar;
-}
-
-public IMethodProxy getArrayGetDouble() {
- if (fArrayGetDouble == null)
- fArrayGetDouble = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getDouble", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetDouble;
-}
-
-public IMethodProxy getArrayGetFloat() {
- if (fArrayGetFloat == null)
- fArrayGetFloat = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getFloat", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetFloat;
-}
-
-public IMethodProxy getArrayGetInt() {
- if (fArrayGetInt == null)
- fArrayGetInt = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getInt", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetInt;
-}
-
-public IMethodProxy getArrayGetLong() {
- if (fArrayGetLong == null)
- fArrayGetLong = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getLong", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetLong;
-}
-
-public IMethodProxy getArrayGetShort() {
- if (fArrayGetShort == null)
- fArrayGetShort = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "getShort", new String[] {"java.lang.Object", "int"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayGetShort;
-}
-
-public IMethodProxy getArraySet() {
- if (fArraySet == null)
- fArraySet = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.reflect.Array", "set", new String[] {"java.lang.Object", "int", "java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- return fArraySet;
-}
-
-public IMethodProxy getArrayHelperGet() {
- if (fArrayHelperGet == null)
- fArrayHelperGet = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "get", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGet;
-}
-
-public IMethodProxy getArrayHelperGetByte() {
- if (fArrayHelperGetByte == null)
- fArrayHelperGetByte = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getByte", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetByte;
-}
-
-public IMethodProxy getArrayHelperGetBoolean() {
- if (fArrayHelperGetBoolean == null)
- fArrayHelperGetBoolean = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getBoolean", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetBoolean;
-}
-
-public IMethodProxy getArrayHelperGetChar() {
- if (fArrayHelperGetChar == null)
- fArrayHelperGetChar = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getChar", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetChar;
-}
-
-public IMethodProxy getArrayHelperGetDouble() {
- if (fArrayHelperGetDouble == null)
- fArrayHelperGetDouble = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getDouble", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetDouble;
-}
-
-public IMethodProxy getArrayHelperGetFloat() {
- if (fArrayHelperGetFloat == null)
- fArrayHelperGetFloat = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getFloat", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetFloat;
-}
-
-public IMethodProxy getArrayHelperGetInt() {
- if (fArrayHelperGetInt == null)
- fArrayHelperGetInt = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getInt", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetInt;
-}
-
-public IMethodProxy getArrayHelperGetLong() {
- if (fArrayHelperGetLong == null)
- fArrayHelperGetLong = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getLong", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetLong;
-}
-
-public IMethodProxy getArrayHelperGetShort() {
- if (fArrayHelperGetShort == null)
- fArrayHelperGetShort = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "getShort", new String[] {"java.lang.Object", "[I"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperGetShort;
-}
-
-public IMethodProxy getArrayHelperSet() {
- if (fArrayHelperSet == null)
- fArrayHelperSet = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "set", new String[] {"java.lang.Object", "[I", "java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- return fArrayHelperSet;
-}
-
-public IMethodProxy getArrayHelperEquals() {
- if (fArrayHelperEquals == null)
- fArrayHelperEquals = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.ArrayHelper", "equals", new String[] {"java.lang.Object", "java.lang.Object"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fArrayHelperEquals;
-}
-
-public IMethodProxy getClassGetDeclaredField() {
-
- if (fClassGetDeclaredField == null)
- fClassGetDeclaredField = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getDeclaredField", new String[] {"java.lang.String"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return fClassGetDeclaredField;
-}
-
-public IMethodProxy getClassGetDeclaredFields() {
-
- if (fClassGetDeclaredFields == null)
- fClassGetDeclaredFields = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getDeclaredFields", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fClassGetDeclaredFields;
-}
-public IMethodProxy getClassGetFields() {
-
- if (fClassGetFields == null)
- fClassGetFields = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getFields", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fClassGetFields;
-}
-
-
-/**
- * @return
- *
- * @since 1.1.0
- */
-public IMethodProxy getClassMethods() {
- if (fClassGetMethods == null)
- fClassGetMethods = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getMethods", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fClassGetMethods;
-}
-
-/**
- * @return
- *
- * @since 1.1.0
- */
-public IMethodProxy getClassDeclaredMethods() {
- if (fClassGetDeclaredMethods == null)
- fClassGetDeclaredMethods = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getDeclaredMethods", null); //$NON-NLS-1$ //$NON-NLS-2$
- return fClassGetDeclaredMethods;
-}
-
-public IMethodProxy getClassDeclaredMethod() {
- if (fClassGetDeclaredMethod == null)
- fClassGetDeclaredMethod = fRegistry.getMethodProxyFactory().getMethodProxy("java.lang.Class", "getDeclaredMethod", new String[] {"java.lang.String", "[Ljava.lang.Class;"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fClassGetDeclaredMethod;
-}
-
-public IMethodProxy getFindCompatibleConstructorMethod() {
- if (fMethodHelperFindCompatibleConstructor == null)
- fMethodHelperFindCompatibleConstructor = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.common.MethodHelper", "findCompatibleConstructor", new String[] {"java.lang.Class", "[Ljava.lang.Class;"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- return fMethodHelperFindCompatibleConstructor;
-}
-
-public IMethodProxy getFindCompatibleMethodMethod() {
- if (fMethodHelperFindCompatibleMethod == null)
- fMethodHelperFindCompatibleMethod = fRegistry.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.common.MethodHelper", "findCompatibleMethod", new String[] {"java.lang.Class", "java.lang.String", "[Ljava.lang.Class;"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- return fMethodHelperFindCompatibleMethod;
-}
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyFactory.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyFactory.java
deleted file mode 100644
index bd04d7dd2..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanProxyFactory.java
+++ /dev/null
@@ -1,854 +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.remote;
-/*
-
-
- */
-
-
-import java.text.MessageFormat;
-import java.util.*;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.remote.CommandErrorException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * The Remote VM Standard Bean Proxy Factory.
- * Creation date: (12/3/99 12:01:45 PM)
- * @author: Joe Winchester
- */
-public final class REMStandardBeanProxyFactory implements IStandardBeanProxyFactory {
- protected final REMProxyFactoryRegistry fRegistry;
- protected final REMStandardBeanTypeProxyFactory fBeanTypeProxyFactory; // Convenience field.
- protected final IREMBeanProxy vmServerProxy;
-
-
- // We need a map for mapping object id's to the proxy. The entry will actually be
- // a REMStandardBeanProxyFactory.WeakProxyReference. This is so that the
- // proxy will not be held tightly by this map and can be GC'd if not referenced.
- // Periodically, the reference queue will be processed to remove any of the
- // entries that have been GC'd and the server will be told that it can release
- // the ID on its side.
- //
- // This map will be used as synchronize object also for access to it.
- //
- // There will be a low priority job that will occasionally process the GC'd objects
- // and remove them from the queue and the remote vm. It will not remove during lockedTransactions.
- //
- // NOTE: Certain proxies never get added to the map. They are the
- // standard types/class (i.e. null, byte, int, long, short, double, float, byte, string). These
- // always have the value saved in the proxy so that it can be retrieved without going back
- // to the server.
- private final HashMap fIDToProxiesMap = new HashMap(1000); // Map ID's to proxies. The proxies have their id's so we don't need a reverse map
- private int transactionLockCount = 0; // Count of transactions that have locked access. It is changed under sync control of fIDToProxies map.
-
- /**
- * The Weak reference used for the id to proxies map for the proxy
- * so that we can clean it up when the proxy has been garbage collected.
- *
- * It is important that all changes to the ProxyRef are done through sync on fIDToProxiesMap.
- */
- private static class ProxyRef extends java.lang.ref.WeakReference {
- private Integer id; // We need the id because this reference will be on the value side
- // and not the key side of the map, so we need to know the key
- // so that the object can be removed from the map.
- //
- // If the ID is null, then this means this entry has been processed
- // in some way and should not be released or removed from the table.
- private int useCnt = 1; // Usage/Ref count. Needed so that we don't get rid of too soon. Since we don't
- // create a ProxyRef without a usage, we start it off with one. It will be incremented
- // then on retrievals when needed by users outside of the remote factories themselves.
- // It won't be physically released until either GC got rid of it, or it goes to 0 or less
- // on a release request.
-
- public ProxyRef(Integer anID, Object proxy, java.lang.ref.ReferenceQueue q) {
- super(proxy, q);
- id = anID;
- }
-
- public Integer getID() {
- return id;
- }
-
- public void clear() {
- super.clear();
- id = null;
- }
-
- public synchronized int useCnt() {
- return useCnt;
- }
-
- public synchronized void incrUseCnt() {
- useCnt++;
- }
-
- public synchronized int decrUseCnt() {
- if (--useCnt < 0)
- useCnt = 0;
- return useCnt;
- }
- }
-
- /* Reference queue for cleared Proxies */
- private java.lang.ref.ReferenceQueue queue = new java.lang.ref.ReferenceQueue();
-
- /**
- * Process the entries on the id to proxies map that have been garbage collected.
- * It is package-protected because only REMRegistryController should call it.
- */
- void processQueue() {
- ProxyRef pr;
- while (true) {
- if (Thread.interrupted())
- return; // Maybe going down. (This actually a kludge because the thread happens to be the master thread from the registry controller).
-
- synchronized (fIDToProxiesMap) {
- if (queue == null || transactionLockCount > 0)
- break; // Either no queue (we are cleaning up) or in a transaction, stop processing and retry on next time slice.
- if ((pr = (ProxyRef) queue.poll()) != null) {
- if (pr.getID() != null) {
- // It hasn't been processed by some other means.
- fIDToProxiesMap.remove(pr.getID());
- releaseID(pr.getID().intValue());
- }
- } else
- break; // There are no more waiting, so leave.
- }
- }
- }
-
-
-/**
- * REMBeanProxyFactory constructor comment.
- *
- * Note: It assumes the beantype factory has already been registered.
- */
-REMStandardBeanProxyFactory(REMProxyFactoryRegistry aRegistry) {
- fRegistry = aRegistry;
- aRegistry.registerBeanProxyFactory(this);
- fBeanTypeProxyFactory = (REMStandardBeanTypeProxyFactory) aRegistry.getBeanTypeProxyFactory();
- fBeanTypeProxyFactory.initialize(this); // Now we're ready for the beantype factory to be initialized.
-
- IREMBeanTypeProxy serverType = fBeanTypeProxyFactory.objectClass.newBeanTypeForClass(new Integer(Commands.REMOTEVMSERVER_CLASS), "org.eclipse.jem.internal.proxy.vm.remote.RemoteVMServerThread", false); //$NON-NLS-1$
- fBeanTypeProxyFactory.registerBeanTypeProxy(serverType, true);
- vmServerProxy = serverType.newBeanProxy(new Integer(Commands.REMOTESERVER_ID));
- registerProxy(vmServerProxy);
-}
-
-
-/**
- * Register a collection of Proxies
- */
-public void registerProxies(Collection proxies) {
- synchronized(fIDToProxiesMap) {
- Iterator itr = proxies.iterator();
- while (itr.hasNext()) {
- IREMBeanProxy proxy = (IREMBeanProxy) itr.next();
- if (proxy instanceof IBeanTypeProxy || !(proxy.getTypeProxy() instanceof IREMConstantBeanTypeProxy)) {
- ProxyRef oldRef = (ProxyRef) fIDToProxiesMap.put(proxy.getID(), new ProxyRef(proxy.getID(), proxy, queue));
- if (oldRef != null) {
- // We've replaced it with a new one, so we will clear out the ref so that it won't later try to remove itself
- oldRef.clear();
- }
- }
- }
- }
-}
-
-/**
- * Register a single proxy
- */
-public void registerProxy(IREMBeanProxy proxy) {
- if (proxy instanceof IBeanTypeProxy || !(proxy.getTypeProxy() instanceof IREMConstantBeanTypeProxy))
- synchronized(fIDToProxiesMap) {
- ProxyRef oldRef = (ProxyRef) fIDToProxiesMap.put(proxy.getID(), new ProxyRef(proxy.getID(), proxy, queue));
- if (oldRef != null) {
- // We've replaced it with a new one, so we will clear out the ref so that it won't later try to remove itself
- oldRef.clear();
- }
- }
-}
-
-/**
- * Release a proxy because no longer needed.
- */
-public void releaseProxy(IBeanProxy proxy) {
- if (!proxy.isValid())
- return;
- if (proxy instanceof IBeanTypeProxy && !fBeanTypeProxyFactory.releaseProxy((IBeanTypeProxy) proxy))
- return; // BeanType and type factory won't allow release of it.
- Integer id = ((IREMBeanProxy) proxy).getID();
- synchronized(fIDToProxiesMap) {
- // Synced in here so that we will remove it before some one else from a different thread may try
- // to access it again.
- if (id.intValue() != Commands.NOT_AN_ID) {
- ProxyRef ref = (ProxyRef) fIDToProxiesMap.get(id);
- if (ref == null || ref.decrUseCnt() <= 0) {
- // No usage, so do actual release.
- fIDToProxiesMap.remove(id);
- ((IREMBeanProxy) proxy).release();
- if (ref != null)
- ref.enqueue(); // Queue it up so that on next release cycle it will go away.
- }
- } else {
- ((IREMBeanProxy) proxy).release();
- }
- }
-}
-
-/**
- * Release a specific ID. This is used in case an ID has been sent
- * but we couldn't proxy it. In that case we only have an ID. It is
- * also used when a proxy has been released explicitly or through GC.
- * In that case it has already been de-registered.
- */
-private void releaseID(int anID) {
- try {
- IREMConnection connect = fRegistry.getFreeConnection();
- try {
- connect.releaseID(anID);
- } finally {
- fRegistry.returnConnection(connect);
- }
- } catch (IllegalStateException e) {
- // Couldn't get connection, don't bother with a release.
- }
-}
-
-/**
- * For the Remote Factory we will create an REMBeanProxy using the null constructor
- * Package protected so only REMBeanTypeProxies can create instances.
- */
-
-IBeanProxy createBeanProxy(IREMBeanTypeProxy aTypeProxy) throws ThrowableProxy {
- return REMStandardBeanProxyConstants.getConstants(fRegistry).getClassNewInstance().invoke(null, aTypeProxy);
-}
-
-/**
- * For the Remote Factory we will create a REMBeanProxy using the initializationString.
- * Package protected so only REMBeanTypeProxies can create instances.
- */
-IBeanProxy createBeanProxy(IREMBeanTypeProxy aTypeProxy, String initializationString)
- throws ThrowableProxy, CommandException, ClassCastException, InstantiationException, IllegalStateException {
- IREMConnection connect = fRegistry.getFreeConnection();
- startTransaction();
- // Starting a transaction, we will be getting id's back and need to get data in a separate step, so we need to group it in a transaction.
- try {
- Commands.ValueObject newInstanceData = null;
- try {
- newInstanceData = getNewInstanceData(aTypeProxy, initializationString, connect);
- } catch (CommandErrorException e) {
- switch (e.getErrorCode()) {
- case Commands.CLASS_CAST_EXCEPTION:
- // The result was not of the correct type.
- throw new ClassCastException(
- MessageFormat.format(ProxyRemoteMessages.Classcast_EXC_, new Object[] {extractFirstLine(initializationString), aTypeProxy.getTypeName()}));
- case Commands.CANNOT_EVALUATE_STRING:
- // Want to log the exception that caused it to not evaluate.
- // Don't need to log this side, just log the RemoteVM side of the trace.
- java.io.StringWriter s = new java.io.StringWriter();
- java.io.PrintWriter w = new java.io.PrintWriter(s);
- ((ThrowableProxy) e.getErrorObject()).printProxyStackTrace(w);
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, s.toString(), null));
- throw new InstantiationException(
- MessageFormat.format(ProxyRemoteMessages.Instantiate_EXC_, new Object[] {extractFirstLine(initializationString)}));
- default:
- throw e; //$NON-NLS-1$
- }
- } catch (CommandException e) {
- if (e.isRecoverable()) {
- ProxyPlugin.getPlugin().getLogger().log(
- new Status(
- IStatus.WARNING,
- ProxyPlugin.getPlugin().getBundle().getSymbolicName(),
- 0,
- "", //$NON-NLS-1$
- e));
- } else {
- // It failed in the command, try again.
- fRegistry.closeConnection(connect);
- connect = null;
- connect = fRegistry.getFreeConnection();
- try {
- newInstanceData = getNewInstanceData(aTypeProxy, initializationString, connect);
- } catch (CommandException eAgain) {
- // It failed again. Close this connection and don't let it be returned.
- fRegistry.closeConnection(connect);
- connect = null; // This is so that it won't be returned.
- }
- }
- } finally {
- if (connect != null)
- fRegistry.returnConnection(connect);
- }
-
- if (newInstanceData != null)
- return getBeanProxy(newInstanceData); // Turn it into a proxy
- } finally {
- stopTransaction(); // Now we can release the transaction.
- }
-
-return null;
-}
-
-private String extractFirstLine(String initString) {
- // Need to extract the first line for the messageFormat not to barf.
- int cr = initString.indexOf('\r');
- int lf = initString.indexOf('\n');
- if (cr != -1 || lf != -1) {
- if (cr == -1 || (lf != -1 && lf < cr))
- return initString.substring(0, lf);
- else
- return initString.substring(0, cr);
- } else
- return initString;
-}
-
-
-/**
- * actually create it using a passed in connection. This allows retry capability.
- *
- * This will send the request over to the connection.
- *
- * If we get an OBJECT back, then the beantypeproxy that the classID in the
- * value points to must be of type IREMConstantBeanTypeProxy so that we can
- * send this new object to the correct beantype to create the correct proxy.
- *
- * If we get an OBJECT_ID back, then the beantypeproxy that the classID in
- * the value points to must be able to handle creating a proxy of that type.
- */
-private Commands.ValueObject getNewInstanceData(IREMBeanTypeProxy aTypeProxy, String initializationString, IREMConnection connect) throws ThrowableProxy, CommandException {
- try {
- Commands.ValueObject newInstanceData = new Commands.ValueObject();
- connect.getNewInstance(aTypeProxy.getID().intValue(), initializationString, newInstanceData);
- return newInstanceData;
- } catch (CommandErrorException e) {
- // TBD - Needs to handle error of not evaluatable and send over to the compilor.
- processErrorReturn(e); // Process this
- }
- return null;
-}
-
-/**
- * actually create it using a passed in connection. This allows retry capability.
- */
-private void getObjectInstanceData(IREMConnection connect, int objectID, Commands.ValueObject valueReturn) throws ThrowableProxy, CommandException {
- try {
- connect.getObjectData(objectID, valueReturn);
- } catch (CommandErrorException e) {
- processErrorReturn(e); // Process this
- }
-}
-
-/**
- * Get a bean proxy from the value object passed in. If not yet created, create one.
- * NOTE: NULL type actually returns a true null. This is so that if people are casting
- * the returned proxy to a specific type (e.g IIntegerBeanProxy), then they won't get
- * a ClassCastException, they will get a null. This is easier for them to handle.
- *
- * NOTE: This is public ONLY so that extension factories can create correct types of
- * proxies in consistent manner from a value object.
- *
- * It is important that this is called
- * from within a transaction only because otherwise the value could have invalid data
- * by the time we try to get the data out of it.
- */
-public IBeanProxy getBeanProxy(Commands.ValueObject value) throws ThrowableProxy, CommandException {
- switch (value.type) {
- // Null result.
- case (byte) Commands.VOID_TYPE:
- return null;
- // A constant object was received.
- case Commands.OBJECT:
- IREMConstantBeanTypeProxy constantBeanType = null;
- try {
- constantBeanType = (IREMConstantBeanTypeProxy) getBeanType(value.classID);
- if (constantBeanType == null)
- return null; // Cannot find the type to create it.
- } catch (ClassCastException e) {
- // It wasn't a constant type, so we can't create it. Return null.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- return null;
- }
-
- return constantBeanType.newBeanProxy(value);
-
- // An existing object_id was returned, the object should exist. If it doesn't
- // then submit the info command to try to recreate it correctly.
- case Commands.OBJECT_ID:
- Integer objectID = new Integer(value.objectID);
- IBeanProxy proxy = retrieveProxy(objectID, true);
- if (proxy != null)
- return proxy;
-
- // Not found, need to try to recreate it.
- IREMConnection connect = fRegistry.getFreeConnection();
- try {
- getObjectInstanceData(connect, value.objectID, value); // Go and get the data
- } catch (CommandErrorException e) {
- if (e.isRecoverable()) {
- ProxyPlugin.getPlugin().getLogger().log(
- new Status(
- IStatus.WARNING,
- ProxyPlugin.getPlugin().getBundle().getSymbolicName(),
- 0,
- "", //$NON-NLS-1$
- e));
- return null;
- } else {
- // Try one more time.
- fRegistry.closeConnection(connect);
- connect = null;
- connect = fRegistry.getFreeConnection();
- try {
- getObjectInstanceData(connect, value.objectID, value); // Go and get the data
- } catch (CommandErrorException eAgain) {
- fRegistry.closeConnection(connect);
- connect = null;
- throw eAgain;
- }
- }
- } finally {
- if (connect != null)
- fRegistry.returnConnection(connect);
- }
-
- return getBeanProxy(value); // Now process it to create the new data.
-
- // An new object id. Need to get the class type and let it create it.
- case Commands.NEW_OBJECT_ID:
- try {
- IREMBeanTypeProxy newBeanType = getBeanType(value.classID);
- IREMBeanProxy newProxy = newBeanType.newBeanProxy(new Integer(value.objectID));
- if (newProxy != null)
- registerProxy(newProxy);
- return newProxy;
- } catch (CommandException e) {
- // The server has created a new object, but we couldn't create/register a proxy for it.
- // We need to release it so that the server can get rid of it. Otherwise it would hang
- // around over there forever.
- releaseID(value.objectID);
- throw e;
- } catch (RuntimeException e) {
- // The server has created a new object, but we couldn't create/register a proxy for it.
- // We need to release it so that the server can get rid of it. Otherwise it would hang
- // around over there forever.
- releaseID(value.objectID);
- throw e;
- }
-
- // An exception was thrown, create the ThrowableProxy and then throw it.
- case Commands.THROW:
- IREMBeanProxy newThrowProxy = null;
- try {
- IREMBeanTypeProxy newThrowType = getBeanType(value.classID);
- newThrowProxy = newThrowType.newBeanProxy(new Integer(value.objectID));
- if (newThrowProxy != null)
- registerProxy(newThrowProxy);
- } catch (CommandException e) {
- // The server has created a new object, but we couldn't create/register a proxy for it.
- // We need to release it so that the server can get rid of it. Otherwise it would hang
- // around over there forever.
- releaseID(value.objectID);
- throw e;
- } catch (RuntimeException e) {
- // The server has created a new object, but we couldn't create/register a proxy for it.
- // We need to release it so that the server can get rid of it. Otherwise it would hang
- // around over there forever.
- releaseID(value.objectID);
- throw e;
- }
- // It really should be a throwable, but if not, just return it.
- if (newThrowProxy instanceof ThrowableProxy)
- throw (ThrowableProxy) newThrowProxy;
- else
- return newThrowProxy;
-
- // It is one of the standard kinds, which are Constant types
- default:
- IREMConstantBeanTypeProxy standardBeanType = null;
- try {
- standardBeanType = (IREMConstantBeanTypeProxy) getBeanType(value.type);
- if (standardBeanType == null)
- return null; // Cannot find the type to create it.
- } catch (ClassCastException e) {
- // It wasn't a standard type, so we can't create it. Return null.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- return null;
- }
- return standardBeanType.newBeanProxy(value);
- }
-}
-
-/**
- * Process the error exception. Get the data from it and turn it into proxy data.
- * If it is a THROW, then it will throw the Throwable instead.
- *
- * NOTE: It is public ONLY so that extension factories can process errors in
- * an consistent manner.
- *
- * It is important that this be called only within a transaction.
- */
-public void processErrorReturn(CommandErrorException e) throws CommandException, ThrowableProxy {
- int code = e.getErrorCode();
- Object data = null;
- if (code == Commands.THROWABLE_SENT)
- data = getBeanProxy(e.getValue()); // It is Throw sent, so let the throw from getBeanProxy continue on out. (But as a safety, we still try to get the data.
- else {
- try {
- data = getBeanProxy(e.getValue());
- } catch (ThrowableProxy t) {
- // But we want to keep throwables in this case. They are just data for the command error.
- data = t;
- }
- }
- throw new CommandErrorException(MessageFormat.format(ProxyRemoteMessages.RemoteCmd_EXC_, new Object[] {new Integer(code)}), code, e.getValue(), data); // Create a new one and throw it containing the proxied data. //$NON-NLS-1$
-}
-
-
-/**
- * Get a beantype where the id passed in is the classID of the beantype.
- * If not found, then go get it loaded. If it can't be found, then we will
- * release the id because it means we have an id from the server, but we
- * can't create a proxy for it, so don't keep the server holding it.
- * NOTE: This is public ONLY so that extension factories can create correct types
- * in a consistent manner from the id.
- *
- * It is important that this be called only from within a transaction.
- */
-public IREMBeanTypeProxy getBeanType(int id) throws CommandException {
- IREMBeanTypeProxy beanType = null;
- try {
- Integer classID = new Integer(id);
- beanType = (IREMBeanTypeProxy) retrieveProxy(classID, false);
- if (beanType == null)
- beanType = fBeanTypeProxyFactory.createBeanTypeProxy(classID); // We don't have it, need to go to the factory so that it can go query what it needs
- if (beanType == null)
- return null; // Cannot find the type to create it.
- } catch (ClassCastException e) {
- // It wasn't a bean type, so we can't create it. Return null.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- } finally {
- if (beanType == null)
- releaseID(id); // Couldn't create a proxy, so release the id.
- }
- return beanType;
-}
-
-
-/**
- * Return a proxy wrapping the primitive integer
- */
-public IIntegerBeanProxy createBeanProxyWith(int aPrimitiveInteger) {
-
- return fBeanTypeProxyFactory.intType.createIntegerBeanProxy(aPrimitiveInteger);
-}
-
-/**
- * Return a proxy wrapping the primitive byte
- */
-public INumberBeanProxy createBeanProxyWith(byte aPrimitiveByte) {
-
- return fBeanTypeProxyFactory.byteType.createByteBeanProxy(aPrimitiveByte);
-}
-
-/**
- * Return a proxy wrapping the primitive char
- */
-public ICharacterBeanProxy createBeanProxyWith(char aPrimitiveChar) {
-
- return fBeanTypeProxyFactory.charType.createCharacterBeanProxy(aPrimitiveChar);
-}
-
-/**
- * Return a proxy wrapping the primitive short
- */
-public INumberBeanProxy createBeanProxyWith(short aPrimitiveShort) {
-
- return fBeanTypeProxyFactory.shortType.createShortBeanProxy(aPrimitiveShort);
-}
-
-/**
- * Return a proxy wrapping the primitive long
- */
-public INumberBeanProxy createBeanProxyWith(long aPrimitiveLong) {
-
- return fBeanTypeProxyFactory.longType.createLongBeanProxy(aPrimitiveLong);
-}
-/**
- * Return a proxy wrapping the primitive double
- */
-public INumberBeanProxy createBeanProxyWith(double aPrimitiveDouble) {
-
- return fBeanTypeProxyFactory.doubleType.createDoubleBeanProxy(aPrimitiveDouble);
-}
-/**
- * Return a proxy wrapping the primitive float
- */
-public INumberBeanProxy createBeanProxyWith(float aPrimitiveFloat) {
-
- return fBeanTypeProxyFactory.floatType.createFloatBeanProxy(aPrimitiveFloat);
-}
-
-/**
- * createBeanProxyWith method comment.
- */
-public IBooleanBeanProxy createBeanProxyWith(Boolean aBoolean) {
- return fBeanTypeProxyFactory.booleanClass.createBooleanBeanProxy(aBoolean);
-}
-/**
- * Return a proxy that wraps the Integer argument
- */
-public IIntegerBeanProxy createBeanProxyWith(Integer anInteger) {
-
- return fBeanTypeProxyFactory.integerClass.createIntegerBeanProxy(anInteger);
-}
-/**
- * createBeanProxyWith method comment.
- */
-public INumberBeanProxy createBeanProxyWith(Number aNumber) {
- REMAbstractNumberBeanTypeProxy type = (REMAbstractNumberBeanTypeProxy) fBeanTypeProxyFactory.getBeanTypeProxy(aNumber.getClass().getName());
- return type.createNumberBeanProxy(aNumber);
-}
-/**
- * Return a proxy for the argument
- */
-public IStringBeanProxy createBeanProxyWith(String aString) {
-
- return fBeanTypeProxyFactory.stringClass.createStringBeanProxy(aString);
-
-}
-/**
- * Return a proxy for the argument
- */
-public ICharacterBeanProxy createBeanProxyWith(Character aCharacter) {
-
- return fBeanTypeProxyFactory.characterClass.createCharacterBeanProxy(aCharacter);
-
-}
-/**
- * createBeanProxyWith method comment.
- */
-public IBooleanBeanProxy createBeanProxyWith(boolean aPrimitiveBoolean) {
- return fBeanTypeProxyFactory.booleanType.createBooleanBeanProxy(aPrimitiveBoolean);
-}
-
-/**
- * Create an array bean proxy.
- *
- * - (int, new int[2] {3, 4}) will create:
- * int [3] [4]
- *
- * - (int[], new int[1] {1})
- * int [1]
- *
- * - (int[], new int[2] {2,3})
- * int [2] [3]
- *
- *
- * - (int[], null) or (int[], new int[0]) or (int, null) or (int, new int[0])
- * int [0]...
- * or
- * (int[][]..., null) or (int[][]..., new int[0])
- * int[0][]...
- * This is because an array instance with no specified dimensions is not valid.
- *
- * - (int[][], new int[1] {3})
- * int[3][]
- */
-public IArrayBeanProxy createBeanProxyWith(IBeanTypeProxy type, int[] dimensions) throws ThrowableProxy {
- if (type.isArray())
- return ((REMArrayBeanTypeProxy) type).createBeanProxyWith(dimensions); // Already an array type, just pass it on.
- else {
- // It is not an array type, so we need to get an array of this type and dimensions.
- REMArrayBeanTypeProxy arrayType = (REMArrayBeanTypeProxy) fBeanTypeProxyFactory.getBeanTypeProxy(type.getTypeName(), dimensions.length);
- return arrayType.createBeanProxyWith(dimensions);
- }
-}
-/**
- * Create a one-dimensional array.
- * The result will be the same as calling
- * createBeanProxyWith(IBeanTypeProxy type, new int[1] {x})
- * where 'x' is the value passed in as the dimension.
- */
-public IArrayBeanProxy createBeanProxyWith(IBeanTypeProxy type, int dimension) throws ThrowableProxy {
- return createBeanProxyWith(type, new int[] {dimension});
-}
-
-/**
- * Retrieve the proxy from the mapping table. Handle already GC'd.
- * If this returns null, it is important that the caller tries to recreate
- * it since the id is still valid on the server.
- */
-private IBeanProxy retrieveProxy(Integer objectID, boolean incrementUseCnt) {
- synchronized (fIDToProxiesMap) {
- ProxyRef ref = (ProxyRef) fIDToProxiesMap.get(objectID);
- if (ref != null) {
- Object bp = ref.get();
- if (ref.isEnqueued() || bp == null) {
- // It's waiting to be removed, or has been removed. i.e. GC'd, so just remove it from the map, next processQueue will remove it from the queue.
- fIDToProxiesMap.remove(objectID);
- ref.clear(); // This is so that when the processQueue see's it,
- // it won't send a release request to the server
- // since it will be recreated when this method returns.
- return null;
- } else {
- if (incrementUseCnt)
- ref.incrUseCnt();
- return (IBeanProxy) bp;
- }
- } else
- return null;
- }
-}
-
-/**
- * Start Transaction: During the time between start/stop transaction,
- * proxies will not be cleaned up. This prevents the case of a two step
- * transaction where the returned ID from the remote vm is for a proxy
- * that is about to be cleaned up, and then having that proxy disappear
- * when going for the data for it.
- *
- * Note: It is IMPERITIVE that the start/stop is used in the following way:
- * factory.startTransaction();
- * try {
- * do your stuff...
- * } finally {
- * factory.stopTransaction();
- * }
- *
- * This way it can never accidently leave it in a locked state.
- */
-public void startTransaction() {
- synchronized (fIDToProxiesMap) {
- transactionLockCount++;
- }
-}
-
-public boolean inTransaction() {
- synchronized (fIDToProxiesMap) {
- return transactionLockCount != 0;
- }
-}
-
-/**
- * Stop Transaction: During the time between start/stop transaction,
- * proxies will not be cleaned up. This prevents the case of a two step
- * transaction where the returned ID from the remote vm is for a proxy
- * that is about to be cleaned up, and then having that proxy disappear
- * when going for the data for it.
- *
- * Note: It is IMPERITIVE that the start/stop is used in the following way:
- * factory.startTransaction();
- * try {
- * do your stuff...
- * } finally {
- * factory.stopTransaction();
- * }
- *
- * This way it can never accidently leave it in a locked state.
- */
-public void stopTransaction() {
- synchronized (fIDToProxiesMap) {
- if (--transactionLockCount < 0)
- transactionLockCount = 0; // Shouldn't occur, but just in case.
- }
-}
-
-/**
- * Terminate the factory. If this is being terminated, then the server is being terminated too.
- * So just go through all of the proxies and release them, but don't send any notification to
- * the server since the server is subsequently just going to throw them away when it terminates.
- * <p>
- * This can't run async, so wait is a suggestion here.
- */
-public void terminateFactory(boolean wait) {
- synchronized (fIDToProxiesMap) {
- Iterator itr = fIDToProxiesMap.values().iterator();
- while (itr.hasNext()) {
- ProxyRef ref = (ProxyRef) itr.next();
- if (ref != null) {
- Object bp = ref.get();
- // If not cleaned up and not enqueued, release it.
- if (bp != null && !ref.isEnqueued())
- ((IREMBeanProxy) bp).release();
- }
- }
-
- fIDToProxiesMap.clear();
- queue = null; // Don't bother processing the queue, don't need to now.
- }
-}
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanProxyFactory#createExpression()
- */
- public IExpression createExpression() {
- return new REMExpression(this.fRegistry);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanProxyFactory#createBeanProxyFrom(java.lang.String)
- */
- public IBeanProxy createBeanProxyFrom(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- try {
- return createBeanProxy(fBeanTypeProxyFactory.voidType, initializationString);
- } catch (CommandException e) {
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$ }
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanProxyFactory#convertToPrimitiveBeanProxy(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
- public IBeanProxy convertToPrimitiveBeanProxy(IBeanProxy nonPrimitiveProxy) {
- if (nonPrimitiveProxy == null)
- return null;
- if (!nonPrimitiveProxy.isValid())
- return nonPrimitiveProxy;
- IREMBeanTypeProxy type = (IREMBeanTypeProxy) nonPrimitiveProxy.getTypeProxy();
- // Step into the internals. The ID is a constant int, so we can use a switch stmt.
- switch (type.getID().intValue()) {
- case Commands.BOOLEAN_CLASS:
- return this.createBeanProxyWith(((IBooleanBeanProxy) nonPrimitiveProxy).booleanValue());
- case Commands.BYTE_CLASS:
- return this.createBeanProxyWith(((INumberBeanProxy) nonPrimitiveProxy).byteValue());
- case Commands.CHARACTER_CLASS:
- return this.createBeanProxyWith(((ICharacterBeanProxy) nonPrimitiveProxy).charValue());
- case Commands.DOUBLE_CLASS:
- return this.createBeanProxyWith(((INumberBeanProxy) nonPrimitiveProxy).doubleValue());
- case Commands.FLOAT_CLASS:
- return this.createBeanProxyWith(((INumberBeanProxy) nonPrimitiveProxy).floatValue());
- case Commands.INTEGER_CLASS:
- return this.createBeanProxyWith(((INumberBeanProxy) nonPrimitiveProxy).intValue());
- case Commands.LONG_CLASS:
- return this.createBeanProxyWith(((INumberBeanProxy) nonPrimitiveProxy).longValue());
- case Commands.SHORT_CLASS:
- return this.createBeanProxyWith(((INumberBeanProxy) nonPrimitiveProxy).shortValue());
- default:
- return nonPrimitiveProxy;
- }
- }
-
-
- public IBeanProxy getIVMServerProxy() {
- return vmServerProxy;
- }
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanTypeProxyFactory.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanTypeProxyFactory.java
deleted file mode 100644
index d9a524327..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStandardBeanTypeProxyFactory.java
+++ /dev/null
@@ -1,690 +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.remote;
-
-/*
-
-
- */
-
-import java.text.MessageFormat;
-import java.util.*;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.core.ExpressionProxy.ProxyEvent;
-import org.eclipse.jem.internal.proxy.common.CommandException;
-import org.eclipse.jem.internal.proxy.common.MapTypes;
-import org.eclipse.jem.internal.proxy.common.remote.CommandErrorException;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * We are a beanTypeProxyFactory for creating REMBeanTypeProxy objects Primitive types as well as common types like String are cached for speed of
- * lookup. We are the standard one that the VCE uses. Creation date: (12/3/99 2:32:48 PM)
- *
- * @author: Joe Winchester
- */
-public final class REMStandardBeanTypeProxyFactory implements IStandardBeanTypeProxyFactory {
-
- protected final REMProxyFactoryRegistry fFactoryRegistry;
-
- protected REMStandardBeanProxyFactory fBeanFactory;
-
- // Hashtable to cache proxies for classes so they are found on second and subsequent lookups
- protected Map fBeanProxies = new HashMap(1000);
-
- // A Cache of bean type proxies that should not ever be released. These are the standard ones
- // that we create here. They are never released because they wouldn't be correctly re-created
- // if they were. Also they are standard ones with standard ID's that don't change so they
- // don't need to be re-created later.
- protected Set fPermanentProxies = new HashSet(30);
-
- // Cache of requested but not found bean types. If not maintaining the list, this variable will be null.
- // The values are strings (classnames in JNI format).
- protected Set fNotFoundTypes = null;
-
- // Cached copy of a few typical bean type proxies.
- REMBeanTypeProxy objectClass;
-
- REMClassBeanTypeProxy classClass;
-
- REMVoidBeanTypeProxy voidType;
-
- REMBooleanTypeBeanTypeProxy booleanType;
-
- REMBooleanClassBeanTypeProxy booleanClass;
-
- REMIntegerTypeBeanTypeProxy intType;
-
- REMIntegerClassBeanTypeProxy integerClass;
-
- REMByteTypeBeanTypeProxy byteType;
-
- REMByteClassBeanTypeProxy byteClass;
-
- REMShortClassBeanTypeProxy shortClass;
-
- REMShortTypeBeanTypeProxy shortType;
-
- REMLongClassBeanTypeProxy longClass;
-
- REMLongTypeBeanTypeProxy longType;
-
- REMDoubleClassBeanTypeProxy doubleClass;
-
- REMDoubleTypeBeanTypeProxy doubleType;
-
- REMFloatClassBeanTypeProxy floatClass;
-
- REMFloatTypeBeanTypeProxy floatType;
-
- REMBigDecimalBeanTypeProxy bigDecimalClass;
-
- REMBigIntegerBeanTypeProxy bigIntegerClass;
-
- REMCharacterTypeBeanTypeProxy charType;
-
- REMCharacterClassBeanTypeProxy characterClass;
-
- REMStringBeanTypeProxy stringClass;
-
- /**
- * Available to all REM beantypes.
- */
- public REMProxyConstants proxyConstants;
-
- /**
- * IDEBeanTypeProxyFactory constructor comment.
- */
- REMStandardBeanTypeProxyFactory(REMProxyFactoryRegistry aRegistry) {
- fFactoryRegistry = aRegistry;
- aRegistry.registerBeanTypeProxyFactory(this);
-
- proxyConstants = new REMProxyConstants(aRegistry);
-
- // Now initialize the cache.
- objectClass = new REMBeanTypeProxy(fFactoryRegistry, new Integer(Commands.OBJECT_CLASS), Object.class.getName(), null);
- classClass = new REMClassBeanTypeProxy(fFactoryRegistry, objectClass);
- voidType = new REMVoidBeanTypeProxy(fFactoryRegistry);
- booleanType = new REMBooleanTypeBeanTypeProxy(fFactoryRegistry);
- booleanClass = new REMBooleanClassBeanTypeProxy(fFactoryRegistry, objectClass);
- IBeanTypeProxy numberClass = objectClass.newBeanTypeForClass(new Integer(Commands.NUMBER_CLASS), Number.class.getName(), true);
- intType = new REMIntegerTypeBeanTypeProxy(fFactoryRegistry);
- integerClass = new REMIntegerClassBeanTypeProxy(fFactoryRegistry, numberClass);
- byteType = new REMByteTypeBeanTypeProxy(fFactoryRegistry);
- byteClass = new REMByteClassBeanTypeProxy(fFactoryRegistry, numberClass);
- shortType = new REMShortTypeBeanTypeProxy(fFactoryRegistry);
- shortClass = new REMShortClassBeanTypeProxy(fFactoryRegistry, numberClass);
- longType = new REMLongTypeBeanTypeProxy(fFactoryRegistry);
- longClass = new REMLongClassBeanTypeProxy(fFactoryRegistry, numberClass);
- doubleType = new REMDoubleTypeBeanTypeProxy(fFactoryRegistry);
- doubleClass = new REMDoubleClassBeanTypeProxy(fFactoryRegistry, numberClass);
- floatType = new REMFloatTypeBeanTypeProxy(fFactoryRegistry);
- floatClass = new REMFloatClassBeanTypeProxy(fFactoryRegistry, numberClass);
- bigDecimalClass = new REMBigDecimalBeanTypeProxy(fFactoryRegistry, numberClass);
- bigIntegerClass = new REMBigIntegerBeanTypeProxy(fFactoryRegistry, numberClass);
- charType = new REMCharacterTypeBeanTypeProxy(fFactoryRegistry);
- characterClass = new REMCharacterClassBeanTypeProxy(fFactoryRegistry, objectClass);
- stringClass = new REMStringBeanTypeProxy(fFactoryRegistry, objectClass);
- IBeanTypeProxy throwableClass = new REMThrowableBeanTypeProxy(fFactoryRegistry, new Integer(Commands.THROWABLE_CLASS), Throwable.class
- .getName(), objectClass);
- IBeanTypeProxy threadClass = objectClass.newBeanTypeForClass(new Integer(Commands.THREAD_CLASS), Thread.class.getName(), false);
- IBeanTypeProxy expressionProcessorControllerClass = objectClass.newBeanTypeForClass(new Integer(Commands.EXPRESSIONPROCESSERCONTROLLER_CLASS), "org.eclipse.jem.internal.proxy.vm.remote.ExpressionProcesserController", false); //$NON-NLS-1$
-
- // Initialize the hashtable with the primitives, their lang equivalents, and also common classes like String
-
- // Primitives
- fBeanProxies.put(voidType.getTypeName(), voidType);
- fBeanProxies.put(intType.getTypeName(), intType);
- fBeanProxies.put(booleanType.getTypeName(), booleanType);
- fBeanProxies.put(charType.getTypeName(), charType);
- fBeanProxies.put(byteType.getTypeName(), byteType);
- fBeanProxies.put(shortType.getTypeName(), shortType);
- fBeanProxies.put(longType.getTypeName(), longType);
- fBeanProxies.put(floatType.getTypeName(), floatType);
- fBeanProxies.put(doubleType.getTypeName(), doubleType);
-
- // java.lang primitive peers
- // Note that special classes are used for some of these which allow the IDE to get the
- // lang objects from the objects that are holding proxies
- fBeanProxies.put(integerClass.getTypeName(), integerClass);
- fBeanProxies.put(booleanClass.getTypeName(), booleanClass);
- fBeanProxies.put(characterClass.getTypeName(), characterClass);
- fBeanProxies.put(byteClass.getTypeName(), byteClass);
- fBeanProxies.put(shortClass.getTypeName(), shortClass);
- fBeanProxies.put(longClass.getTypeName(), longClass);
- fBeanProxies.put(floatClass.getTypeName(), floatClass);
- fBeanProxies.put(doubleClass.getTypeName(), doubleClass);
- fBeanProxies.put(bigDecimalClass.getTypeName(), bigDecimalClass);
- fBeanProxies.put(bigIntegerClass.getTypeName(), bigIntegerClass);
- fBeanProxies.put(stringClass.getTypeName(), stringClass);
- fBeanProxies.put(throwableClass.getTypeName(), throwableClass);
- fBeanProxies.put(objectClass.getTypeName(), objectClass);
- fBeanProxies.put(classClass.getTypeName(), classClass);
- fBeanProxies.put(numberClass.getTypeName(), numberClass);
- fBeanProxies.put(threadClass.getTypeName(), threadClass);
- fBeanProxies.put(expressionProcessorControllerClass.getTypeName(), expressionProcessorControllerClass);
-
- // Mark these as permanent.
- fPermanentProxies.addAll(fBeanProxies.values());
- }
-
- /**
- * Initialize AFTER BeanProxyFactory has been created. This is REQUIRED! NOTE: It is package protected so that only REMStandardBeanProxyFactory
- * can call it when ready.
- */
- synchronized void initialize(REMStandardBeanProxyFactory proxyFactory) {
- fBeanFactory = proxyFactory;
- fBeanFactory.registerProxies(fBeanProxies.values());
- }
-
- /*
- * This is called when we know we don't have the class registered, so we need to create the proxy. We have a connection passed in and will reuse
- * it as necessary
- *
- * It is important that this be called only from within a transaction.
- */
- private synchronized IREMBeanTypeProxy createBeanTypeProxy(String typeName, IREMConnection connection) throws CommandException {
-
- // We don't have the beantype proxy, so create it.
- IREMBeanTypeProxy beanTypeProxy = null;
- Commands.GetClassReturn ret = null;
- try {
- ret = getClassReturn(connection, typeName);
- } catch (ThrowableProxy ep) {
- // Print out the trace and return proxy with init error.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", ep)); //$NON-NLS-1$
- IREMBeanTypeProxy proxy = new REMInitErrorBeanTypeProxy(fFactoryRegistry, MessageFormat.format(ProxyRemoteMessages.ExceptionErrorMsg_EXC_, new Object[] { ep.getTypeProxy().getTypeName(), ep.getProxyLocalizedMessage()}), typeName); //$NON-NLS-1$
- registerBeanTypeProxy(proxy, false);
- return proxy;
- }
- if (ret == null) {
- if (fNotFoundTypes != null)
- fNotFoundTypes.add(typeName);
- return null; // The class doesn't even exist on the server.
- }
-
- if (typeName.charAt(0) != '[') {
- // It is not an array.
- IREMBeanTypeProxy superTypeProxy = null;
- if (!ret.isInterface && ret.superClassname.length() != 0) {
- // Get the beantype proxy of the superclass.
- superTypeProxy = getBeanTypeProxy(ret.superClassname, connection);
- }
-
- // First check with the factory for the package of the class.
- // Inner classes have to use the dollar notation since if they didn't we couldn't tell where
- // the package ended and the class started. This check is here in case the
- // extension factory can handle this class but needs the id from the server to
- // create it.
- int packageIndex = typeName.lastIndexOf('.');
- if (packageIndex != -1) {
- String packageName = typeName.substring(0, packageIndex);
- IREMBeanTypeProxyFactory packageFactory = (IREMBeanTypeProxyFactory) fFactoryRegistry.getBeanTypeProxyFactoryExtension(packageName);
- if (packageFactory != null) {
- beanTypeProxy = packageFactory.getExtensionBeanTypeProxy(typeName, new Integer(ret.classID), superTypeProxy);
- if (beanTypeProxy != null) {
- registerBeanTypeProxy(beanTypeProxy, false);
- return beanTypeProxy;
- }
- }
- }
-
- if (ret.isInterface) {
- // Interface never have a super type, so we will create a specific type.
- beanTypeProxy = new REMInterfaceBeanTypeProxy(fFactoryRegistry, new Integer(ret.classID), typeName);
- } else {
- // Ask the supertype
- // to create a beantype proxy of the same beantype proxy class.
- // This is so that any subclasses will get the same beantype proxy class
- // for it if it is special.
- if (superTypeProxy != null)
- beanTypeProxy = superTypeProxy.newBeanTypeForClass(new Integer(ret.classID), typeName, ret.isAbstract);
- }
- } else
- beanTypeProxy = new REMArrayBeanTypeProxy(fFactoryRegistry, new Integer(ret.classID), typeName, objectClass);
-
- // Cache the instance so we can re-use it again
- if (beanTypeProxy != null)
- registerBeanTypeProxy(beanTypeProxy, false);
- return beanTypeProxy;
- }
-
- /**
- * Using the helper class to find a class by name, then create the proxy.
- */
- public IBeanTypeProxy getBeanTypeProxy(String typeName) {
- try {
- return getBeanTypeProxy(MapTypes.getJNIFormatName(typeName), (IREMConnection) null);
- } catch (CommandException e) {
- // Try once more (we won't have received recoverable exceptions here, they were already caught and handled)
- try {
- return getBeanTypeProxy(typeName, (IREMConnection) null);
- } catch (CommandException eAgain) {
- // Failed again.
- ProxyPlugin.getPlugin().getLogger().log(
- new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", eAgain)); //$NON-NLS-1$
- }
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#getBeanTypeProxy(org.eclipse.jem.internal.proxy.core.IExpression,
- * java.lang.String)
- */
- public synchronized IProxyBeanType getBeanTypeProxy(IExpression expression, String typeName) {
- typeName = MapTypes.getJNIFormatName(typeName);
- // See whether we already have the proxy for the argument name
- IProxyBeanType beanTypeProxy = (IProxyBeanType) fBeanProxies.get(typeName);
- if (beanTypeProxy != null)
- return beanTypeProxy;
-
- // Now see if an expression proxy cached.
- beanTypeProxy = ((REMExpression) expression).getBeanType(typeName);
- if (beanTypeProxy != null)
- return beanTypeProxy;
-
- // If not an array, then see if the package extension mechanism can find it.
- // Do this here so that if it is found in the package extension we won't necessarily create an
- // extra connection when not needed.
- if (typeName.charAt(0) != '[') {
- // It is not an array
- // First check with the factory for the package of the class.
- // Inner classes have to use the dollar notation since if they didn't we couldn't tell where
- // the package ended and the class started.
- int packageIndex = typeName.lastIndexOf('.');
- if (packageIndex != -1) {
- String packageName = typeName.substring(0, packageIndex);
- IREMBeanTypeProxyFactory packageFactory = (IREMBeanTypeProxyFactory) fFactoryRegistry.getBeanTypeProxyFactoryExtension(packageName);
- if (packageFactory != null) {
- beanTypeProxy = packageFactory.getExtensionBeanTypeProxy(typeName, expression);
- if (beanTypeProxy != null) {
- registerBeanTypeProxy(beanTypeProxy, false);
- return beanTypeProxy;
- }
- }
- }
- }
-
- // Need to create the expression proxy for it.
- beanTypeProxy = ((Expression) expression).createBeanTypeExpressionProxy(typeName);
- registerBeanTypeProxy(beanTypeProxy, false);
- return beanTypeProxy;
-
- }
-
- /**
- * One that internally allows that we already have a connection to work with. If the connection is null, then one will be created.
- *
- * It is important that if the connection is not null, then we are in a transaction.
- */
- private synchronized IREMBeanTypeProxy getBeanTypeProxy(String typeName, IREMConnection inConnect) throws CommandException {
-
- // See whether we already have the proxy for the argument name
- IProxyBeanType beanTypeProxy = (IProxyBeanType) fBeanProxies.get(typeName);
- // See if there and resolved, if so, return it. If not resolved, that means we need it NOW
- // so we must go for it. When finally resolved the original ExpressionProxy will be deregistered and
- // the resolved beantypeproxy will be in its place.
- if (beanTypeProxy != null && beanTypeProxy.isBeanProxy()) { return (IREMBeanTypeProxy) beanTypeProxy; }
-
- // If not an array, then see if the package extension mechanism can find it.
- // Do this here so that if it is found in the package extension we won't necessarily create an
- // extra connection when not needed.
- if (typeName.charAt(0) != '[') {
- // It is not an array
- // First check with the factory for the package of the class.
- // Inner classes have to use the dollar notation since if they didn't we couldn't tell where
- // the package ended and the class started.
- int packageIndex = typeName.lastIndexOf('.');
- if (packageIndex != -1) {
- String packageName = typeName.substring(0, packageIndex);
- IREMBeanTypeProxyFactory packageFactory = (IREMBeanTypeProxyFactory) fFactoryRegistry.getBeanTypeProxyFactoryExtension(packageName);
- if (packageFactory != null) {
- beanTypeProxy = packageFactory.getExtensionBeanTypeProxy(typeName);
- if (beanTypeProxy != null) {
- registerBeanTypeProxy((IREMBeanTypeProxy) beanTypeProxy, false);
- return (IREMBeanTypeProxy) beanTypeProxy;
- }
- }
- }
- }
-
- IREMConnection connect = inConnect != null ? inConnect : fFactoryRegistry.getFreeConnection();
- if (inConnect == null)
- fBeanFactory.startTransaction(); // Start a transation.
- try {
- return createBeanTypeProxy(typeName, connect);
- } catch (CommandException e) {
- if (inConnect == null) {
- // Need to close the connection, not return it.
- fFactoryRegistry.closeConnection(connect);
- connect = null; // So that it won't be returned.
- }
- throw e; // Pass it on up
- } finally {
- if (inConnect == null)
- fBeanFactory.stopTransaction();
- if (inConnect == null && connect != null)
- fFactoryRegistry.returnConnection(connect);
- }
- }
-
- /*
- * It is important this be called only from within a transaction.
- */
- private Commands.GetClassReturn getClassReturn(IREMConnection connection, String className) throws CommandException, ThrowableProxy {
- try {
- return connection.getClass(className);
- } catch (CommandErrorException e) {
- fBeanFactory.processErrorReturn(e); // Let proxy factory handle the error return
- }
- return null;
- }
-
- /**
- * Return an Array type proxy for the given class name of the specified dimensions. This is a helper method. The same result can be gotton from
- * getBeanTypeProxy. e.g. getBeanTypeProxy("java.lang.Object", 3) is the same as: getBeanTypeProxy("[[[Ljava.lang.Object;")
- *
- * They both result in a type of: Object [][][]
- *
- * or getBeanTypeProxy("[Ljava.langObject;", 3) becomes Object [][][][]
- */
- public IBeanTypeProxy getBeanTypeProxy(String componentClassName, int dimensions) {
- return getBeanTypeProxy(getArrayClassName(componentClassName, dimensions));
- }
-
- /**
- * @param componentClassName
- * @param dimensions
- * @return
- *
- * @since 1.1.0
- */
- private String getArrayClassName(String componentClassName, int dimensions) {
- String jniComponentClassName = MapTypes.getJNIFormatName(componentClassName);
- String compType = jniComponentClassName;
- if (jniComponentClassName.charAt(0) != '[') {
- // We're not already an array, so create correct template.
- compType = (String) MapTypes.MAP_TYPENAME_TO_SHORTSIG.get(jniComponentClassName);
- if (compType == null) {
- // It is a class, and not a type.
- compType = "L" + jniComponentClassName + ";"; //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-
- // Now create it with the appropriate number of '[' in front.
- StringBuffer buffer = new StringBuffer(dimensions + compType.length());
- for (int i = 0; i < dimensions; i++)
- buffer.append('[');
- buffer.append(compType);
- return buffer.toString();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#getBeanTypeProxy(org.eclipse.jem.internal.proxy.core.IExpression,
- * java.lang.String, int)
- */
- public IProxyBeanType getBeanTypeProxy(IExpression expression, String componentClassName, int dimensions) {
- return getBeanTypeProxy(expression, getArrayClassName(componentClassName, dimensions));
- }
-
- /**
- * Get the bean type proxy from a class id. This means that a new class id was sent back from the server that we don't have yet. We need to go ask
- * the server for information on this type so that we can create it.
- *
- * NOTE: This is package protected so that only the standard bean proxy factory can call it.
- *
- * It is important that this has been called within a transaction.
- */
- IREMBeanTypeProxy createBeanTypeProxy(Integer classID) {
- IREMConnection connect = fFactoryRegistry.getFreeConnection();
- try {
- return createBeanTypeProxy(classID, connect);
- } catch (CommandException e) {
- if (e.isRecoverable()) {
- // It is recoverable, print message, keep connection live and return it.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", e)); //$NON-NLS-1$
- } else {
- // Try again, close connection, get a new one.
- fFactoryRegistry.closeConnection(connect);
- connect = null;
- connect = fFactoryRegistry.getFreeConnection();
- try {
- return createBeanTypeProxy(classID, connect);
- } catch (CommandException eAgain) {
- // Failed again. Close connection, don't return it.
- ProxyPlugin.getPlugin().getLogger().log(
- new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", eAgain)); //$NON-NLS-1$
- fFactoryRegistry.closeConnection(connect);
- connect = null;
- }
- }
- } finally {
- if (connect != null)
- fFactoryRegistry.returnConnection(connect);
- }
- return null;
- }
-
- /*
- * One that internally allows that we already have a connection to work with. If the connection is null, then one will be created.
- *
- * It is important this be called only from within a transaction.
- */
- private synchronized IREMBeanTypeProxy createBeanTypeProxy(Integer classID, IREMConnection connect) throws CommandException {
- // We don't have the beantype proxy, so create it.
- IREMBeanTypeProxy beanTypeProxy = null;
-
- Commands.GetClassIDReturn ret = null;
- try {
- ret = getClassIDReturn(connect, classID);
- } catch (ThrowableProxy ep) {
- // Just print out the trace and return proxy not found.
- ProxyPlugin.getPlugin().getLogger().log(new Status(IStatus.WARNING, ProxyPlugin.getPlugin().getBundle().getSymbolicName(), 0, "", ep)); //$NON-NLS-1$
- return null;
- }
-
- // If the signature is that of a class.
- if (ret.className.charAt(0) != '[') {
- // It is not an array.
- IREMBeanTypeProxy superTypeProxy = null;
- if (!ret.isInterface && ret.superClassname.length() != 0) {
- // Get the beantype proxy of the superclass.
- superTypeProxy = getBeanTypeProxy(ret.superClassname, connect);
- }
-
- // First check with the factory for the package of the class.
- // Inner classes have to use the dollar notation since if they didn't we couldn't tell where
- // the package ended and the class started.
- int packageIndex = ret.className.lastIndexOf('.');
- if (packageIndex != -1) {
- String packageName = ret.className.substring(0, packageIndex);
- IREMBeanTypeProxyFactory packageFactory = (IREMBeanTypeProxyFactory) fFactoryRegistry.getBeanTypeProxyFactoryExtension(packageName);
- if (packageFactory != null) {
- beanTypeProxy = packageFactory.getExtensionBeanTypeProxy(ret.className, classID, superTypeProxy);
- if (beanTypeProxy != null) {
- registerBeanTypeProxy(beanTypeProxy, false);
- return beanTypeProxy;
- }
- }
- }
-
- if (ret.isInterface) {
- // Interface never have a super type, so we will let the object class do it for us.
- beanTypeProxy = new REMInterfaceBeanTypeProxy(fFactoryRegistry, classID, ret.className);
- } else {
- // Ask the beantype proxy of the superclass
- // to create a beantype proxy of the same beantype proxy class.
- // This is so that any subclasses will get the same beantype proxy class
- // for it if it is special.
- if (superTypeProxy != null)
- beanTypeProxy = superTypeProxy.newBeanTypeForClass(classID, ret.className, ret.isAbstract);
- }
-
- // Cache the instance so we can re-use it again
- if (beanTypeProxy != null)
- registerBeanTypeProxy(beanTypeProxy, false);
- return beanTypeProxy;
- } else {
- // It is an array.
- beanTypeProxy = new REMArrayBeanTypeProxy(fFactoryRegistry, classID, ret.className, objectClass);
- registerBeanTypeProxy(beanTypeProxy, false);
- return beanTypeProxy;
- }
- }
-
- /*
- * It is important that this be called only from within a transaction.
- */
- private Commands.GetClassIDReturn getClassIDReturn(IREMConnection connection, Integer classID) throws CommandException, ThrowableProxy {
- try {
- return connection.getClassFromID(classID.intValue());
- } catch (CommandErrorException e) {
- fBeanFactory.processErrorReturn(e); // Let proxy factory handle the error return
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#registerBeanTypeProxy(org.eclipse.jem.internal.proxy.core.IBeanTypeProxy,
- * boolean)
- */
- public synchronized void registerBeanTypeProxy(IBeanTypeProxy aBeanTypeProxy, boolean permanent) {
- fBeanProxies.put(aBeanTypeProxy.getTypeName(), aBeanTypeProxy);
- fBeanFactory.registerProxy((IREMBeanProxy) aBeanTypeProxy);
- if (permanent)
- fPermanentProxies.add(aBeanTypeProxy);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#registerBeanTypeProxy(org.eclipse.jem.internal.proxy.core.IProxyBeanType,
- * boolean)
- */
- public void registerBeanTypeProxy(IProxyBeanType aProxyBeanType, final boolean permanent) {
- if (aProxyBeanType.isBeanProxy())
- registerBeanTypeProxy((IBeanTypeProxy) aProxyBeanType, permanent); // A regular kind, do regular registration.
- else {
- ExpressionProxy beanExpressionProxy = ((ExpressionProxy) aProxyBeanType);
- final String typeName = aProxyBeanType.getTypeName();
- ((REMExpression) beanExpressionProxy.getExpression()).addBeanType(typeName, aProxyBeanType);
- beanExpressionProxy.addProxyListener(new ExpressionProxy.ProxyAdapter() {
-
- public void proxyResolved(ProxyEvent event) {
- String typeName = ((IProxyBeanType) event.getSource()).getTypeName();
- synchronized (REMStandardBeanTypeProxyFactory.this) {
- if (!fBeanProxies.containsKey(typeName)) {
- // It hasn't been resolved through some other means. So this is good. Actually this should never
- // occur because upon resolution we've already registered the bean type proxy through the
- // normal mechanisms. But to be safe, we'll do it here.
- fBeanProxies.put(typeName, event.getProxy());
- if (permanent)
- fPermanentProxies.add(event.getProxy());
- }
- }
- }
-
- public void proxyNotResolved(ExpressionProxy.ProxyEvent event) {
- ((REMExpression) ((ExpressionProxy) event.getSource()).getExpression()).removeBeanType(typeName);
- }
- });
- }
-
- }
-
- /**
- * A beantype proxy is asked to be released. We can only release ones that were not in the permanent set that we initialized with. Those in the
- * permanent set can't be changed so we can't release them.
- *
- * Answer whether it can be released from the server too.
- *
- * NOTE: Package protected since only REMStandardBeanProxyFactory should call it.
- */
- boolean releaseProxy(IBeanTypeProxy proxy) {
- /**
- * Currently we won't allow any bean type proxies to be released. We don't have a good strategy for handling that there may be hard refs from
- * subtypes. One thought is that beanproxies table should store SoftReferences so that only when space is needed, that any beantype that
- * doesn't have a subtype (since subtypes hold a strong ref) or, is in the permanent table (since that is hardref) could be GC'd. Then what
- * would happen is on releaseProxy we don't actually release, we change it to a WeakRef so that it would definitely be released on a GC. These
- * are complicated arch. and we're not sure if it should be allowed or not. So for now, we don't allow them to be released. if
- * (!fPermanentProxies.contains(proxy)) { // We can release it. It is not one of the permanent ones. synchronized(this) {
- * fBeanProxies.remove(proxy.getTypeName()); return true; } }
- */
- return false;
- }
-
- /*
- * Terminate this factory. Since all of the proxies are registered in the proxy factory, there is no need to release them here. There is no need
- * to clear out any fields since this factory will not be held onto by anything and so it will be GC'd.
- */
- public void terminateFactory(boolean wait) {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#isBeanTypeRegistered(String)
- */
- public synchronized boolean isBeanTypeRegistered(String className) {
- return fBeanProxies.containsKey(MapTypes.getJNIFormatName(className));
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#registeredTypes()
- */
- public Set registeredTypes() {
- return fBeanProxies.keySet();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#isBeanTypeNotFound(String)
- */
- public synchronized boolean isBeanTypeNotFound(String className) {
- return fNotFoundTypes != null && fNotFoundTypes.contains(MapTypes.getJNIFormatName(className));
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#isMaintainNotFoundTypes()
- */
- public synchronized boolean isMaintainNotFoundTypes() {
- return fNotFoundTypes != null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IStandardBeanTypeProxyFactory#setMaintainNotFoundTypes(boolean)
- */
- public synchronized void setMaintainNotFoundTypes(boolean maintain) {
- if (maintain) {
- if (fNotFoundTypes == null)
- fNotFoundTypes = new HashSet();
- } else
- fNotFoundTypes = null;
- }
-
-}
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanProxy.java
deleted file mode 100644
index 7d396d0dd..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanProxy.java
+++ /dev/null
@@ -1,83 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-
-/**
- * Remote VM Implementation of IStringBeanProxy
- * Creation date: (2/6/00 9:02:42 AM)
- * @author: Joe Winchester
- */
-final class REMStringBeanProxy extends REMConstantBeanProxy implements IStringBeanProxy {
- private final String fString;
-
-/**
- * Store the bean in the string field to save re-casting each time it is asked for.
- * It is package protected because they are created
- * in a special way and no one else should create them.
- */
-REMStringBeanProxy(REMProxyFactoryRegistry aRegistry, String value) {
- super(aRegistry);
- fString = value;
-}
-/**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
-public boolean equals(Object anObject) {
- if (this == anObject)
- return true; // Identity
- if (anObject instanceof IStringBeanProxy)
- return fString.equals(((IStringBeanProxy) anObject).stringValue());
- else
- return fString.equals(anObject);
-}
-/**
- * Return the cache'd string that is a java.lang.String that the IDE can use
- */
-public String stringValue() {
- return fString;
-}
-
-/**
- * Return the toString value from the bean.
- */
-public String toBeanString() {
- return fString.toString();
-}
-
-/**
- * Get the beantype
- */
-public IBeanTypeProxy getTypeProxy() {
- return ((REMStandardBeanTypeProxyFactory) fFactory.getBeanTypeProxyFactory()).stringClass;
-}
-
-/**
- * Render the bean into value object.
- */
-public void renderBean(Commands.ValueObject value) {
- value.set(fString);
-}
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanTypeProxy.java
deleted file mode 100644
index f48c29da3..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMStringBeanTypeProxy.java
+++ /dev/null
@@ -1,124 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-import org.eclipse.jem.internal.proxy.core.*;
-
-/**
- * Remote Implementation of the BeanType proxy for java.lang.String
- * Creation date: (2/6/00 9:01:23 AM)
- * @author: Joe Winchester
- */
-final class REMStringBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMConstantBeanTypeProxy {
- // Cache a proxy to an empty string for speed
- protected final IStringBeanProxy emptyStringProxy;
-/**
- * IDEStringBeanTypeProxy constructor comment.
- * @param aClass java.lang.Class
- */
-REMStringBeanTypeProxy(REMProxyFactoryRegistry aRegistry, IBeanTypeProxy objectTypeProxy) {
- super(aRegistry, new Integer(Commands.STRING_CLASS), String.class.getName(), objectTypeProxy);
-
- // Cache a proxy to an empty string for speed
- emptyStringProxy = new REMStringBeanProxy(aRegistry, ""); //$NON-NLS-1$
-}
-/**
- * Helper to create string beans
- * Package protected because no-one else outside the package should use this, they
- * must go through the API where you look up a factory first.
- */
-IStringBeanProxy createStringBeanProxy(String aString){
- if ( aString.equals("") ) {//$NON-NLS-1$
- return emptyStringProxy;
- } else {
- return new REMStringBeanProxy(fRegistry, aString);
- }
-}
-
-/**
- * Create a new bean proxy with the specified id.
- *
- * For all of the primitive wrapper types, this is an invalid operation. They are created
- * explicitly through the appropriate create method.
- */
-public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For all of the primitive wrapper types, they are final classes, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newInstance method. String has a default ctor, but it results in the emptyStringProxy,
- * so return the zeroProxy for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return emptyStringProxy;
-}
-
-/**
- * newInstance method comment. Put a short cut in for strings so we don't need to go to the remote
- * vm just to create a string.
- */
-public IBeanProxy newInstance(String initializationString) throws ThrowableProxy, ClassCastException, InstantiationException {
- if (initializationString.length() <= 1)
- return super.newInstance(initializationString); // Not large enough for two quotes, so let default handle it.
- // Need a quick check that it is only one quoted string. Anything else needs to be passed on up.
- String s = initializationString.trim();
- int sl = s.length()-1;
- if (s.charAt(0) != '"' || s.charAt(sl) != '"')
- return super.newInstance(initializationString); // No leading and trailing quote.
-
- StringBuffer sb = new StringBuffer(sl);
- boolean escape = false;
- for (int i=1; i<sl; i++) {
- char c = s.charAt(i);
- if (c == '\\') {
- escape = true;
- continue;
- }
- if (!escape && c == '"')
- return super.newInstance(initializationString); // Had a quote in the middle without an escape. This means an expression, send on up.
- escape = false;
- sb.append(c);
- }
-
- return getProxyFactoryRegistry().getBeanProxyFactory().createBeanProxyWith(sb.toString());
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return createStringBeanProxy((String) value.anObject);
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanProxy.java
deleted file mode 100644
index 1b45591f4..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanProxy.java
+++ /dev/null
@@ -1,214 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.*;
-/**
- * Exception Proxy for exception on Remote.
- * NOTE: This one is unusual in that it doesn't inherit from
- * IDEBeanProxy because it needs to be an exception, and
- * exceptions are not an interface.
- */
-public class REMThrowableBeanProxy extends ThrowableProxy implements IREMBeanProxy {
-
- /**
- * Comment for <code>serialVersionUID</code>
- *
- * @since 1.1.0
- */
- private static final long serialVersionUID = 2076777336810215206L;
- private Integer fID;
- protected final REMProxyFactoryRegistry fFactory;
- private IBeanTypeProxy fTypeProxy;
-
- /**
- * Set the bean we are proxying. We are a proxy for a bean running on the remote VM.
- */
- protected REMThrowableBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anID, IBeanTypeProxy aType){
- fFactory = aRegistry;
- fID = anID;
- fTypeProxy = aType;
- }
-
- /**
- * equals: Equal if:
- * 1) This proxy == (identity) to the other object
- * 2) Else if other is an IBeanProxy and not a constant one, then if
- * equals on the server.
- * 3) If this is a constant proxy and the other is too or is a constant
- * value (e.g. IStringBeanProxy.equals(String), then true if values are equals.
- */
- public boolean equals(Object anObject) {
- if (super.equals(anObject))
- return true; // Identity
- if (anObject instanceof IBeanProxy && !(anObject instanceof IREMConstantBeanProxy) && fFactory.isValid() && ((IBeanProxy) anObject).getProxyFactoryRegistry() == fFactory)
- try {
- // The other is a bean proxy and is not a constant one, let the server do the check.
- return ((IBooleanBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getObjectEquals().invoke(this, (IBeanProxy) anObject)).booleanValue();
- } catch (ThrowableProxy e) {
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxy#sameAs(org.eclipse.jem.internal.proxy.core.IBeanProxy)
- */
- public boolean sameAs(IBeanProxy aBeanProxy) {
- return this == aBeanProxy; // We can be assured in Remote Proxy that identity of proxy and identity of object are the same.
- }
-
-
- /**
- * Get ID. An internal method to be used only within the ProxyFactory family.
- */
- public Integer getID() {
- return fID;
- }
-
- /**
- * isValid - has this bean been released.
- */
- public boolean isValid() {
- return fID != null;
- }
-
- /**
- * release - The bean is being released.
- */
- public void release() {
- fID = null;
- fTypeProxy = null;
- }
-
- /**
- * Return the registry this proxy was created with.
- */
- public ProxyFactoryRegistry getProxyFactoryRegistry() {
- return fFactory;
- }
-
- /**
- * Return the proxied class of the bean
- * Creation date: (12/3/99 11:37:01 AM)
- * @author: Joe Winchester
- */
- public IBeanTypeProxy getTypeProxy() {
- return fTypeProxy;
- }
-
- /**
- * Return the toString of the actual bean on the remote side.
- */
- public String toBeanString() {
- IStringBeanProxy string = (IStringBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getObjectToString().invokeCatchThrowableExceptions(this);
- return (string != null) ? string.stringValue() : null;
- }
-
- public String getProxyLocalizedMessage() {
- IStringBeanProxy msg = (IStringBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getThrowableLocalizedMessage().invokeCatchThrowableExceptions(this);
- return msg != null ? msg.stringValue() : null;
- }
-
- public String getProxyMessage() {
- IStringBeanProxy msg = (IStringBeanProxy) REMStandardBeanProxyConstants.getConstants(fFactory).getThrowableMessage().invokeCatchThrowableExceptions(this);
- return msg != null ? msg.stringValue() : null;
- }
-
- /**
- * Temporary way to get the string value of the stacktrace.
- */
- private String getProxyStackTrace() {
- IMethodProxy tempGetStackTrace = fFactory.getMethodProxyFactory().getMethodProxy("org.eclipse.jem.internal.proxy.vm.remote.StackTraceUtility", "printStackTrace", new String[] {"java.lang.Throwable"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- IStringBeanProxy trace = (IStringBeanProxy) tempGetStackTrace.invokeCatchThrowableExceptions(null, this);
- return trace != null ? trace.stringValue() : ""; //$NON-NLS-1$
- }
-
- public void printProxyStackTrace(java.io.PrintWriter writer) {
- String trace = getProxyStackTrace();
- synchronized(writer) {
- writer.print(trace);
- }
- }
-
- public void printProxyStackTrace(java.io.PrintStream stream) {
- String trace = getProxyStackTrace();
- synchronized(stream) {
- stream.print(trace);
- }
-
- }
-
- public void printProxyStackTrace() {
- String trace = getProxyStackTrace();
- synchronized(System.err) {
- System.err.print(trace);
- }
- }
-
-
- /**
- * Below are the actual printStackTrace. They are set up to first call
- * the proxy trace so that it can show where it occurred on the server,
- * and then it will do a super to show where it occurred on this side.
- */
- public void printStackTrace() {
- synchronized (System.err) {
- System.err.println(ProxyRemoteMessages.REMOTE_VM_TRACE_INFO_);
- printProxyStackTrace();
- System.err.println(ProxyRemoteMessages.REMOTE_VM_LOCAL_TRACE_INFO_);
- super.printStackTrace();
- }
- }
-
- public void printStackTrace(java.io.PrintWriter s) {
- synchronized (s) {
- s.println(ProxyRemoteMessages.REMOTE_VM_TRACE_INFO_);
- printProxyStackTrace(s);
- s.println(ProxyRemoteMessages.REMOTE_VM_LOCAL_TRACE_INFO_);
- super.printStackTrace(s);
- }
- }
-
- public void printStackTrace(java.io.PrintStream s) {
- synchronized (s) {
- s.println(ProxyRemoteMessages.REMOTE_VM_TRACE_INFO_);
- printProxyStackTrace(s);
- s.println(ProxyRemoteMessages.REMOTE_VM_LOCAL_TRACE_INFO_);
- super.printStackTrace(s);
- }
- }
-
- /**
- * Render the bean into value object.
- */
- public void renderBean(Commands.ValueObject value) {
- value.setObjectID(getID().intValue());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isBeanProxy()
- */
- public final boolean isBeanProxy() {
- return true;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jem.internal.proxy.core.IProxy#isExpressionProxy()
- */
- public final boolean isExpressionProxy() {
- return false;
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanTypeProxy.java
deleted file mode 100644
index 997bddc3c..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMThrowableBeanTypeProxy.java
+++ /dev/null
@@ -1,68 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * The Remote implementation of a Throwable bean type.
- */
-public class REMThrowableBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMSpecialBeanTypeProxy {
-
- protected REMThrowableBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType) {
- super(aRegistry, anID, aClassname, aSuperType);
- }
-
- /**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
- REMThrowableBeanProxy createThrowableBeanProxy(Integer objectID) {
- return new REMThrowableBeanProxy(fRegistry, objectID, this);
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * NOTE: All subclasses must override this to return the correct type of BeanTypeProxy.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- return newBeanTypeForClass(anID, aClassname, anAbstract, this);
- }
-
- /**
- * The special method to handle subclassing from an abstract).
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract, IBeanTypeProxy superType) {
- // We can never have an interface of type Throwable since that doesn't exist.
- if (!anAbstract)
- return new REMThrowableBeanTypeProxy(fRegistry, anID, aClassname, superType);
- else
- return new REMAnAbstractBeanTypeProxy(fRegistry, anID, aClassname, superType, this);
- }
-
- /**
- * Specialized from REMAbstractBeanTypeProxy to ensure ExceptionBeanProxies are created correctly.
- */
- public IREMBeanProxy newBeanProxy(Integer objectID) {
- return createThrowableBeanProxy(objectID);
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMVoidBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMVoidBeanTypeProxy.java
deleted file mode 100644
index 1fb6c2688..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/REMVoidBeanTypeProxy.java
+++ /dev/null
@@ -1,83 +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.remote;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.common.remote.Commands;
-/**
- * BeanTypeProxy for representing the "void" type value, and a value of this type is "null".
- * Creation date: (2/11/00 2:26:47 PM)
- * @author: Richard Lee Kulp
- */
-final class REMVoidBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMConstantBeanTypeProxy {
-
-
-protected REMVoidBeanTypeProxy(REMProxyFactoryRegistry aRegistry) {
- super(aRegistry, new Integer(Commands.VOID_TYPE), Void.TYPE.getName(), null);
-}
-
-/**
- * Return the supertype for us
- * null/void has no superclass.
- * This is required as part of the interface
- */
-public IBeanTypeProxy getSuperBeanTypeProxy() {
- return null;
-}
-
-/**
- * Create a new bean proxy with the specified id.
- *
- * For void, this is an invalid operation. They are created
- * explicitly through the appropriate create method.
- */
-public IREMBeanProxy newBeanProxy(Integer anID) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * For void is a final class, so you can't create a newBeanType
- * for subclasses.
- */
-public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- throw new UnsupportedOperationException();
-}
-
-/**
- * newInstance method. void represents "null",
- * so return the null for this case because that is the default value.
- */
-public IBeanProxy newInstance() {
- return null;
-}
-
-/**
- * Create a new bean proxy the ValueObject passed in.
- * We will assume the object is correct type.
- */
-public IBeanProxy newBeanProxy(Commands.ValueObject value) {
- return newInstance();
-}
-
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanProxy.java
deleted file mode 100644
index fdd351b1f..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanProxy.java
+++ /dev/null
@@ -1,68 +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.remote.awt;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.remote.*;
-import org.eclipse.jem.internal.proxy.awt.*;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * The REM Bean Proxy for java.awt.Dimension.
- */
-public class REMDimensionBeanProxy extends REMBeanProxy implements IDimensionBeanProxy {
-
- protected REMDimensionBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anID, IBeanTypeProxy aType) {
- super(aRegistry, anID, aType);
- }
-
- public int getHeight() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getDimensionHeightFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public int getWidth() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getDimensionWidthFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public void setHeight(int height) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getDimensionHeightFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(height));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setWidth(int width) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getDimensionWidthFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(width));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setSize(int width, int height) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getDimensionSetSizeHWProxy().invokeCatchThrowableExceptions(this, new IBeanProxy[] {fFactory.getBeanProxyFactory().createBeanProxyWith(width), fFactory.getBeanProxyFactory().createBeanProxyWith(height)});
- }
-
- public void setSize(IDimensionBeanProxy fromDimensionProxy) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getDimensionSetSizeDProxy().invokeCatchThrowableExceptions(this, fromDimensionProxy);
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanTypeProxy.java
deleted file mode 100644
index 7ea93dee3..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMDimensionBeanTypeProxy.java
+++ /dev/null
@@ -1,67 +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.remote.awt;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.remote.*;
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-/**
- * Beantype proxy for java.awt.Dimension
- */
-public class REMDimensionBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMSpecialBeanTypeProxy {
-
- protected REMDimensionBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType) {
- super(aRegistry, anID, aClassname, aSuperType);
- }
-
- /**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
- REMDimensionBeanProxy createDimensionBeanProxy(Integer objectID) {
- return new REMDimensionBeanProxy(fRegistry, objectID, this);
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * NOTE: All subclasses must override this to return the correct type of BeanTypeProxy.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- return newBeanTypeForClass(anID, aClassname, anAbstract, this);
- }
-
- /**
- * The special method to handle subclassing from an abstract).
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract, IBeanTypeProxy superType) {
- if (!anAbstract)
- return new REMDimensionBeanTypeProxy(fRegistry, anID, aClassname, superType);
- else
- return new REMAnAbstractBeanTypeProxy(fRegistry, anID, aClassname, superType, this);
- }
-
- /**
- * Specialized from REMAbstractBeanTypeProxy to ensure ExceptionBeanProxies are created correctly.
- */
- public IREMBeanProxy newBeanProxy(Integer objectID) {
- return createDimensionBeanProxy(objectID);
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanProxy.java
deleted file mode 100644
index c817747f1..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanProxy.java
+++ /dev/null
@@ -1,71 +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.remote.awt;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.remote.*;
-import org.eclipse.jem.internal.proxy.awt.*;
-import org.eclipse.jem.internal.proxy.core.*;
-
-/**
- * The REM Bean Proxy for java.awt.Point.
- */
-public class REMPointBeanProxy extends REMBeanProxy implements IPointBeanProxy {
-
- protected REMPointBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anID, IBeanTypeProxy aType) {
- super(aRegistry, anID, aType);
- }
-
- public int getX() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getPointXFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public int getY() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getPointYFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public void setX(int x) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getPointXFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(x));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setY(int y) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getPointYFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(y));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setLocation(int x, int y) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getPointSetLocationXYProxy().invokeCatchThrowableExceptions(this, new IBeanProxy[] {fFactory.getBeanProxyFactory().createBeanProxyWith(x), fFactory.getBeanProxyFactory().createBeanProxyWith(y)});
- }
-
- public void setLocation(IPointBeanProxy fromPointProxy) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getPointSetLocationPProxy().invokeCatchThrowableExceptions(this, fromPointProxy);
- }
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanTypeProxy.java
deleted file mode 100644
index e0768ef80..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMPointBeanTypeProxy.java
+++ /dev/null
@@ -1,67 +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.remote.awt;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.remote.*;
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-/**
- * Beantype proxy for java.awt.Dimension
- */
-public class REMPointBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMSpecialBeanTypeProxy {
-
- protected REMPointBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType) {
- super(aRegistry, anID, aClassname, aSuperType);
- }
-
- /**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
- REMPointBeanProxy createPointBeanProxy(Integer objectID) {
- return new REMPointBeanProxy(fRegistry, objectID, this);
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * NOTE: All subclasses must override this to return the correct type of BeanTypeProxy.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- return newBeanTypeForClass(anID, aClassname, anAbstract, this);
- }
-
- /**
- * The special method to handle subclassing from an abstract).
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract, IBeanTypeProxy superType) {
- if (!anAbstract)
- return new REMPointBeanTypeProxy(fRegistry, anID, aClassname, superType);
- else
- return new REMAnAbstractBeanTypeProxy(fRegistry, anID, aClassname, superType, this);
- }
-
- /**
- * Specialized from REMAbstractBeanTypeProxy to ensure ExceptionBeanProxies are created correctly.
- */
- public IREMBeanProxy newBeanProxy(Integer objectID) {
- return createPointBeanProxy(objectID);
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanProxy.java
deleted file mode 100644
index 96ee2ec26..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanProxy.java
+++ /dev/null
@@ -1,120 +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.remote.awt;
-/*
-
-
- */
-
-
-import org.eclipse.jem.internal.proxy.remote.*;
-import org.eclipse.jem.internal.proxy.awt.*;
-import org.eclipse.jem.internal.proxy.core.*;
-/**
- * The REM Bean Proxy for java.awt.Rectangle.
- */
-public class REMRectangleBeanProxy extends REMBeanProxy implements IRectangleBeanProxy {
-
- protected REMRectangleBeanProxy(REMProxyFactoryRegistry aRegistry, Integer anID, IBeanTypeProxy aType) {
- super(aRegistry, anID, aType);
- }
-
- public int getX() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleXFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public int getY() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleYFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public void setX(int x) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleXFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(x));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setY(int y) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleYFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(y));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setLocation(int x, int y) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleSetLocationXYProxy().invokeCatchThrowableExceptions(this, new IBeanProxy[] {fFactory.getBeanProxyFactory().createBeanProxyWith(x), fFactory.getBeanProxyFactory().createBeanProxyWith(y)});
- }
-
- public void setLocation(IPointBeanProxy fromPointProxy) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleSetLocationPProxy().invokeCatchThrowableExceptions(this, fromPointProxy);
- }
-
-
- public int getHeight() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleHeightFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public int getWidth() {
- try {
- IIntegerBeanProxy h = (IIntegerBeanProxy) JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleWidthFieldProxy().get(this);
- return h.intValue();
- } catch (ThrowableProxy e) {
- return 0;
- }
- }
-
- public void setHeight(int height) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleHeightFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(height));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setWidth(int width) {
- try {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleWidthFieldProxy().set(this, fFactory.getBeanProxyFactory().createBeanProxyWith(width));
- } catch (ThrowableProxy e) {
- }
- }
-
- public void setSize(int width, int height) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleSetSizeHWProxy().invokeCatchThrowableExceptions(this, new IBeanProxy[] {fFactory.getBeanProxyFactory().createBeanProxyWith(width), fFactory.getBeanProxyFactory().createBeanProxyWith(height)});
- }
-
- public void setSize(IDimensionBeanProxy fromDimensionProxy) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleSetSizeDProxy().invokeCatchThrowableExceptions(this, fromDimensionProxy);
- }
-
- public void setBounds(int x, int y, int width, int height) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleSetBoundsXYHWProxy().invokeCatchThrowableExceptions(this, new IBeanProxy[] {fFactory.getBeanProxyFactory().createBeanProxyWith(x), fFactory.getBeanProxyFactory().createBeanProxyWith(y), fFactory.getBeanProxyFactory().createBeanProxyWith(width), fFactory.getBeanProxyFactory().createBeanProxyWith(height)});
- }
-
- public void setBounds(IRectangleBeanProxy fromRectangleProxy) {
- JavaStandardAwtBeanConstants.getConstants(fFactory).getRectangleSetBoundsRProxy().invokeCatchThrowableExceptions(this, fromRectangleProxy);
- }
-}
-
-
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanTypeProxy.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanTypeProxy.java
deleted file mode 100644
index e272f5004..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRectangleBeanTypeProxy.java
+++ /dev/null
@@ -1,67 +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.remote.awt;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.remote.*;
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-/**
- * Beantype proxy for java.awt.Dimension
- */
-public class REMRectangleBeanTypeProxy extends REMAbstractBeanTypeProxy implements IREMSpecialBeanTypeProxy {
-
- protected REMRectangleBeanTypeProxy(REMProxyFactoryRegistry aRegistry, Integer anID, String aClassname, IBeanTypeProxy aSuperType) {
- super(aRegistry, anID, aClassname, aSuperType);
- }
-
- /**
- * Helper to create a bean proxy
- * Package protected because everyone should go through the factory API
- * that is defined as part of IBeanProxyFactory
- */
- REMRectangleBeanProxy createRectangleBeanProxy(Integer objectID) {
- return new REMRectangleBeanProxy(fRegistry, objectID, this);
- }
-
- /**
- * newBeanTypeForClass: Create a new beantypeproxy of this kind for the given class.
- * This is used by beantype proxy factory when creating a beantype proxy for a subclass.
- * This is because subclasses, unless explicitly overridden, should use the same kind
- * of beantype proxy. This way if anything special is needed for a specific type, then
- * that can be done.
- *
- * NOTE: All subclasses must override this to return the correct type of BeanTypeProxy.
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract) {
- return newBeanTypeForClass(anID, aClassname, anAbstract, this);
- }
-
- /**
- * The special method to handle subclassing from an abstract).
- */
- public IREMBeanTypeProxy newBeanTypeForClass(Integer anID, String aClassname, boolean anAbstract, IBeanTypeProxy superType) {
- if (!anAbstract)
- return new REMRectangleBeanTypeProxy(fRegistry, anID, aClassname, superType);
- else
- return new REMAnAbstractBeanTypeProxy(fRegistry, anID, aClassname, superType, this);
- }
-
- /**
- * Specialized from REMAbstractBeanTypeProxy to ensure ExceptionBeanProxies are created correctly.
- */
- public IREMBeanProxy newBeanProxy(Integer objectID) {
- return createRectangleBeanProxy(objectID);
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRegisterAWT.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRegisterAWT.java
deleted file mode 100644
index 2734556cf..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMRegisterAWT.java
+++ /dev/null
@@ -1,38 +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.remote.awt;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-import org.eclipse.jem.internal.proxy.core.IMethodProxy;
-import org.eclipse.jem.internal.proxy.remote.REMProxyFactoryRegistry;
-/**
- * This class is used to register the AWT factories. It is not
- * meant to be called by anyone other than ProxyVMStarter.
- */
-public final class REMRegisterAWT {
- public static void registerAWT(REMProxyFactoryRegistry registry) {
- new REMStandardAWTBeanTypeProxyFactory(registry);
- new REMStandardAWTBeanProxyFactory(registry);
-
- // If we are doing AWT, get the AWT event queue going. This is trying to be a time-saver
- // by having it up right away.
- IBeanTypeProxy starterBeanType = registry.getBeanTypeProxyFactory().getBeanTypeProxy("org.eclipse.jem.internal.proxy.vm.remote.AWTStarter"); //$NON-NLS-1$
- if (starterBeanType != null) {
- IMethodProxy starter = starterBeanType.getMethodProxy("startAWT"); //$NON-NLS-1$
- if (starter != null)
- starter.invokeCatchThrowableExceptions(null);
- }
- }
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanProxyFactory.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanProxyFactory.java
deleted file mode 100644
index 6e938c4ea..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanProxyFactory.java
+++ /dev/null
@@ -1,74 +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.remote.awt;
-/*
-
-
- */
-
-import org.eclipse.jem.internal.proxy.awt.*;
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.remote.REMProxyFactoryRegistry;
-
-/**
- * Standard AWT Bean Proxy Factory.
- * Package protected because it should not referenced
- * outside of the package other than through the interface.
- */
-class REMStandardAWTBeanProxyFactory implements IStandardAwtBeanProxyFactory {
-
- final IStandardBeanTypeProxyFactory fBeanTypeFactory;
-
- public REMStandardAWTBeanProxyFactory(REMProxyFactoryRegistry factory) {
- factory.registerBeanProxyFactory(IStandardAwtBeanProxyFactory.REGISTRY_KEY, this);
- fBeanTypeFactory = factory.getBeanTypeProxyFactory();
- }
-
- public IDimensionBeanProxy createDimensionBeanProxyWith(int width, int height){
- try {
- return (IDimensionBeanProxy) fBeanTypeFactory.getBeanTypeProxy("java.awt.Dimension").newInstance("new java.awt.Dimension("+width+","+height+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- } catch (ThrowableProxy e) {
- return null;
- } catch (InstantiationException e) {
- return null; // Shouldn't occur
- }
- }
-
- public IPointBeanProxy createPointBeanProxyWith(int x, int y){
- try {
- return (IPointBeanProxy) fBeanTypeFactory.getBeanTypeProxy("java.awt.Point").newInstance("new java.awt.Point("+x+","+y+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- } catch (ThrowableProxy e) {
- return null;
- } catch (InstantiationException e) {
- return null; // Shouldn't occur
- }
-
- }
-
- public IRectangleBeanProxy createBeanProxyWith(int x, int y, int width, int height){
- try {
- return (IRectangleBeanProxy) fBeanTypeFactory.getBeanTypeProxy("java.awt.Rectangle").newInstance("new java.awt.Rectangle("+x+","+y+","+width+","+height+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
- } catch (ThrowableProxy e) {
- return null;
- } catch (InstantiationException e) {
- return null; // Shouldn't occur
- }
-
- }
-
- /*
- * Terminate this factory. Since it doesn't hold onto anything other than the beantype factory,
- * and nothing will be holding onto this factory, nothing needs to be done. It will be GC'd.
- */
- public void terminateFactory(boolean wait) {
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanTypeProxyFactory.java b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanTypeProxyFactory.java
deleted file mode 100644
index 2e6d50f67..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/awt/REMStandardAWTBeanTypeProxyFactory.java
+++ /dev/null
@@ -1,82 +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.remote.awt;
-
-
-import org.eclipse.jem.internal.proxy.core.*;
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-import org.eclipse.jem.internal.proxy.remote.*;
-
-/**
- * BeanType factory standard AWT bean types. This is package protected because it shouldn't be referenced outside the package. It should only be
- * accessed through the interface.
- */
-class REMStandardAWTBeanTypeProxyFactory implements IREMBeanTypeProxyFactory {
-
- static final String BEAN_TYPE_FACTORY_KEY = "java.awt"; //$NON-NLS-1$
-
- protected final REMProxyFactoryRegistry fFactoryRegistry;
-
- REMStandardAWTBeanTypeProxyFactory(REMProxyFactoryRegistry aRegistry) {
- fFactoryRegistry = aRegistry;
- fFactoryRegistry.registerBeanTypeProxyFactory(BEAN_TYPE_FACTORY_KEY, this);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanTypeProxyFactory#getExtensionBeanTypeProxy(java.lang.String)
- */
- public IREMBeanTypeProxy getExtensionBeanTypeProxy(String className) {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanTypeProxyFactory#getExtensionBeanTypeProxy(java.lang.String, java.lang.Integer,
- * org.eclipse.jem.internal.proxy.core.IBeanTypeProxy)
- */
- public IREMBeanTypeProxy getExtensionBeanTypeProxy(String className, Integer classID, IBeanTypeProxy superType) {
-
- if ("java.awt.Dimension".equals(className)) //$NON-NLS-1$
- return new REMDimensionBeanTypeProxy(fFactoryRegistry, classID, className, superType);
- else if ("java.awt.Point".equals(className)) //$NON-NLS-1$
- return new REMPointBeanTypeProxy(fFactoryRegistry, classID, className, superType);
- else if ("java.awt.Rectangle".equals(className)) //$NON-NLS-1$
- return new REMRectangleBeanTypeProxy(fFactoryRegistry, classID, className, superType);
- else
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.remote.IREMBeanTypeProxyFactory#getExtensionBeanTypeProxy(java.lang.String,
- * org.eclipse.jem.internal.proxy.core.IExpression)
- */
- public IProxyBeanType getExtensionBeanTypeProxy(String typeName, IExpression expression) {
- return getExtensionBeanTypeProxy(typeName);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jem.internal.proxy.core.IBeanProxyFactory#terminateFactory(boolean)
- */
- public void terminateFactory(boolean wait) {
- }
-
-}
diff --git a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/messages.properties b/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/messages.properties
deleted file mode 100644
index fca5f071a..000000000
--- a/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/messages.properties
+++ /dev/null
@@ -1,67 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 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
-###############################################################################
-#
-# $Source: /cvsroot/webtools/jeetools.move/webtools.javaee.git/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/messages.properties,v $
-# $Revision: 1.17 $ $Date: 2006/09/14 18:29:35 $
-#
-
-
-
-# Exception message - {0} is the name of a project within Eclipse.
-NO_OUTPUT_FOLDER_EXC_ = IWAV0071E No output folder for project "{0}."
-
-# These are lines that are placed into a log file listing the outputs from the two different streams.
-VM_TERMINATED_INFO_ = IWAV0072I Remote VM terminated before any commands can be sent. Following are the error and output streams.
-VM_TERMINATED_LINE1 = -- Error Stream --
-VM_TERMINATED_LINE2 = -- Output Stream --
-VM_TERMINATED_LINE3 = -- End of Stream Output --
-
-# These are the headers for two parts of a stack trace of an exception. The first one is the trace from the remote system.
-# The second is the trace from the local system.
-REMOTE_VM_TRACE_INFO_ = IWAV0073I *** RemoteVM Exception - Trace from Remote VM:
-REMOTE_VM_LOCAL_TRACE_INFO_ = IWAV0074I *** Local StackTrace:
-
-# In the two below, {0} is a string that is a java creation string, e.g. "new Integer(3)", so they don't participate in translation.
-# In Classcast, {1} is a java type name, e.g. java.lang.Integer.
-Classcast_EXC_ = IWAV0124E "{0}" does not evaluate to an object of type {1}
-Instantiate_EXC_ = IWAV0125E "{0}" is too complicated to be evaluated
-
-# {0} is a number, e.g. 1, 2, ...
-RemoteCmd_EXC_ = IWAV0126E Remote command error {0}
-
-# The following is an exception error where {0} is the name of the class of the exception and {1} is the message from the exception
-# The message {1} has already been localized (if it supplied it localized). It comes from somewhere outside of our project.
-ExceptionErrorMsg_EXC_ = IWAV0135E {0}({1})
-OK_7 = OK
-Proxy_NoRunner_ERROR_ = IWAV0137E Could not find a Run type runner to launch for \"{0}\".
-Proxy_Error_Title = Error:
-Proxy_Terminated_too_soon_ERROR_ = IWAV0138E Remote VM terminated too soon. See .log file for trace of output. For VM \"{0}\".
-# This is a launch name for a given project name ({0}).
-# WARNING for the ProxyRemoteVMName and ProxyRemoteVMNameWithComment do not use double-quote ("). It will cause problems.
-ProxyRemoteVMName = Project ({0})
-# This is a launch name that has a comment ({0} is project name, {1} is the comment for this project launch)
-ProxyRemoteVMNameWithComment = Project ({0})-{1}
-
-ProxyRemoteNoLaunchKey = Cannot launch local proxy registry. Not launched from valid launcher.
-
-# {0} is the appropriate VMName from the above two entries.
-ProxyRemoteLaunchVM = Launching remote vm "{0}"
-
-CleanupJob_title = Remote VM Cleanup GC'd Proxies Job
-
-REMProxyFactoryRegistry_CallbackConnectionNotWorking_EXC_ = IWAV0169E Callback connection is not working.
-REMProxyFactoryRegistry_ConnectionCreationFailed_INFO_ = IWAV0170I Connection creation failed.
-REMProxyFactoryRegistry_Job_TerminateProcess_Title=Terminate the remote vm process.
-REMProxyFactoryRegistry_CouldNotCreateSocketConnectionToRemoteVM_EXC_ = IWAV0171E Could not create a socket connection to remote vm. This is often due to your firewall blocking access from your java to do local access.
-REMExpression_IOExceptionSeeLog_INFO_ = IWAV0172I I/O Exception occurred. See .log file for details.
-REMExpression_CommandExceptionSeeLog_INFO_ = IWAV0173I Command Exception occurred. See .log file for details.
-LocalProxyLaunchDelegate_Monitor_PrintRemoteTrace_Text=Print remote vm trace output
-VM_COMMAND_LINE=Remote VM Commandline:

Back to the top