[61944] Some minor performance improvements
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/AllSuites.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/AllSuites.java
index abe8844..e09b760 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/AllSuites.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/AllSuites.java
@@ -11,13 +11,14 @@
  *******************************************************************************/
 /*
  *  $RCSfile: AllSuites.java,v $
- *  $Revision: 1.3 $  $Date: 2004/06/09 22:47:00 $ 
+ *  $Revision: 1.4 $  $Date: 2004/08/10 17:52:18 $ 
  */
 import org.eclipse.jem.tests.beaninfo.BeanInfoSuite;
 import org.eclipse.jem.tests.instantiation.InstantiationSuite;
 import org.eclipse.jem.tests.modelListeners.ListenersSuite;
 import org.eclipse.jem.tests.proxy.ide.IDEProxySuite;
 import org.eclipse.jem.tests.proxy.initParser.InitParserSuite;
+import org.eclipse.jem.tests.proxy.initParser.tree.ASTParserSuite;
 import org.eclipse.jem.tests.proxy.remote.RemoteProxySuite;
 
 import junit.framework.Test;
@@ -27,6 +28,7 @@
 	// Testa cases to be include in the suite
 	private static Class suitesList[] = {
 		InitParserSuite.class,  
+		ASTParserSuite.class,
 		RemoteProxySuite.class,
 		IDEProxySuite.class,
 		BeanInfoSuite.class,
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java
index a947f2d..172a7ba 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/JavaProjectUtil.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaProjectUtil.java,v $
- *  $Revision: 1.7 $  $Date: 2004/07/16 15:33:57 $ 
+ *  $Revision: 1.8 $  $Date: 2004/08/10 17:52:18 $ 
  */
 
 
@@ -121,7 +121,7 @@
 					e.printStackTrace();
 				}
 			}
-		}, project, 0, pm);
+		}, workspace.getRoot(), 0, pm);
 		
 		return project;
 	}
@@ -241,7 +241,7 @@
 					project.setRawClasspath(newRaw, new SubProgressMonitor(monitor, 100));
 				}
 			}
-		}, project.getProject(), 0, pm);
+		}, workspace.getRoot(), 0, pm);
 	}
 	
 	public static void waitForAutoBuild() throws CoreException {
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/TestStandard.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/TestStandard.java
index bd67dc0..6407481 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/TestStandard.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/TestStandard.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: TestStandard.java,v $
- *  $Revision: 1.3 $  $Date: 2004/02/04 21:25:31 $ 
+ *  $Revision: 1.4 $  $Date: 2004/08/10 17:52:18 $ 
  */
 import java.io.IOException;
 
@@ -54,7 +54,7 @@
 		assertTrue(integerType.isKindOf(objectType));		
 	}
 	
-	public void testInvoke() throws ThrowableProxy {		
+	public void testMethodInvoke() throws ThrowableProxy {		
 		IBeanTypeProxy integerType = proxyTypeFactory.getBeanTypeProxy("java.lang.Integer"); //$NON-NLS-1$		
 		IMethodProxy mthd = integerType.getMethodProxy("valueOf", "java.lang.String"); //$NON-NLS-1$ //$NON-NLS-2$
 		assertNotNull(mthd);
@@ -71,7 +71,27 @@
 			assertEquals("java.lang.IllegalArgumentException", e.getTypeProxy().getTypeName()); //$NON-NLS-1$
 		}						
 	}
-	
+
+	public void testInvoke() throws ThrowableProxy {
+		// Technically invokables should be used for one-shot usage, but here to test the invoke correctly
+		// it will be used twice. This is not an error, just overhead.
+		IBeanTypeProxy integerType = proxyTypeFactory.getBeanTypeProxy("java.lang.Integer"); //$NON-NLS-1$		
+		IInvokable invokable = integerType.getInvokable("valueOf", "java.lang.String"); //$NON-NLS-1$ //$NON-NLS-2$
+		assertNotNull(invokable);
+		// See if we can invoke methods.
+		IIntegerBeanProxy anInt = (IIntegerBeanProxy) invokable.invoke(null, proxyFactory.createBeanProxyWith("5")); //$NON-NLS-1$
+		assertNotNull(anInt);
+		assertEquals(5, anInt.intValue());
+		// See if invoke with bad type throws the ExceptionProxy.
+		try {
+			invokable.invoke(null, proxyFactory.createBeanProxyWith(5));
+			fail("Exception not thrown like it should of been.");
+		} catch (ThrowableProxy e) {
+			// We should of gotton the exception. See if it is of the correct type.
+			assertEquals("java.lang.IllegalArgumentException", e.getTypeProxy().getTypeName()); //$NON-NLS-1$
+		}						
+	}
+
 	public void testSimpleInitString() throws ThrowableProxy, InstantiationException {
 		IBeanTypeProxy integerType = proxyTypeFactory.getBeanTypeProxy("java.lang.Integer"); //$NON-NLS-1$				
 		// See if we can create it from an initialization string.
@@ -385,6 +405,27 @@
 		assertEquals((byte)254, ((INumberBeanProxy) byteValue).byteValue());
 	}
 	
+	public void testInvokableAccessors() throws ThrowableProxy {
+		IBeanTypeProxy integerType = proxyTypeFactory.getBeanTypeProxy("java.lang.Integer"); //$NON-NLS-1$				
+		
+		// Test able to access beantype proxy and invoke methods on it. This isn't
+		// the approved way of getting methods, but it tests that method proxies
+		// are created correctly if returned from an invoke method.
+		IBeanTypeProxy classTypeProxy = proxyTypeFactory.getBeanTypeProxy("java.lang.Class"); //$NON-NLS-1$
+		IInvokable getMethodInvokable = classTypeProxy.getInvokable("getMethod", new String[] {"java.lang.String", "[Ljava.lang.Class;"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		// Get the Integer.byteValue() method through an invoke instead of a method factory or bean type.
+		IBeanProxy method = getMethodInvokable.invoke(integerType, new IBeanProxy[] {
+			proxyFactory.createBeanProxyWith("byteValue"), null}); //$NON-NLS-1$
+		assertNotNull(method);
+		assertTrue(method instanceof IMethodProxy);
+		
+		// Now invoke it to see if correct answer comes back.
+		IBeanProxy byteValue = ((IMethodProxy) method).invoke(proxyFactory.createBeanProxyWith(new Integer(254)));
+		assertNotNull(byteValue);
+		assertEquals("byte", byteValue.getTypeProxy().getTypeName()); //$NON-NLS-1$
+		assertEquals((byte)254, ((INumberBeanProxy) byteValue).byteValue());
+	}	
+	
 	public void testCallback() throws ThrowableProxy {
 		System.out.println("--- Starting the callback test ---"); //$NON-NLS-1$
 		IBeanTypeProxy callbackType = proxyTypeFactory.getBeanTypeProxy("org.eclipse.jem.tests.proxy.vm.TestCallback"); //$NON-NLS-1$
@@ -393,8 +434,8 @@
 		IBeanProxy callbackProxy = callbackType.newInstance();
 		TestCallback cb = new TestCallback(testObject, registry);
 		registry.getCallbackRegistry().registerCallback(callbackProxy, cb);
-		IMethodProxy start = callbackType.getMethodProxy("start");	//$NON-NLS-1$
-		IMethodProxy stop = callbackType.getMethodProxy("stop");	//$NON-NLS-1$
+		IInvokable start = callbackType.getInvokable("start");	//$NON-NLS-1$
+		IInvokable stop = callbackType.getInvokable("stop");	//$NON-NLS-1$
 		synchronized(testObject) {
 			start.invokeCatchThrowableExceptions(callbackProxy);
 			try {
diff --git a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/initParser/tree/ASTTreeInitStringParserTestHelper.java b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/initParser/tree/ASTTreeInitStringParserTestHelper.java
index 6988c28..8a0af40 100644
--- a/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/initParser/tree/ASTTreeInitStringParserTestHelper.java
+++ b/tests/org.eclipse.jem.tests/javatests/org/eclipse/jem/tests/proxy/initParser/tree/ASTTreeInitStringParserTestHelper.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: ASTTreeInitStringParserTestHelper.java,v $
- *  $Revision: 1.8 $  $Date: 2004/05/20 15:41:56 $ 
+ *  $Revision: 1.9 $  $Date: 2004/08/10 17:52:18 $ 
  */
 package org.eclipse.jem.tests.proxy.initParser.tree;
 
@@ -37,7 +37,7 @@
  */
 public class ASTTreeInitStringParserTestHelper extends AbstractInitStringParserTestHelper {
 
-	private static final String TEMPLATE_CLASS = "public class TEMPLATE '{'\n  public void test() '{'\n    String.valueOf({0});\n  }\n}";
+	private static final String TEMPLATE_CLASS = "public class TEMPLATE '{'\n  public void test() '{'\n    String.valueOf({0});\t// a line comment\n  }\n}";
 	private static final String TEMPLATE_CLASS_IMPORTS = "{0}\npublic class TEMPLATE '{'\n  public void test() '{'\n    String.valueOf({1});\n  }\n}";
 	
 	private IJavaProject project;