[jboss-cvs] JBossAS SVN: r76230 - projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/client/support/launcher.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jul 25 07:58:42 EDT 2008


Author: adrian at jboss.org
Date: 2008-07-25 07:58:42 -0400 (Fri, 25 Jul 2008)
New Revision: 76230

Modified:
   projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java
Log:
Use reflection to avoid CCE

Modified: projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java
===================================================================
--- projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java	2008-07-25 11:36:00 UTC (rev 76229)
+++ projects/jboss-cl/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java	2008-07-25 11:58:42 UTC (rev 76230)
@@ -338,6 +338,7 @@
     * @param args
     * @throws Throwable
     */
+   @SuppressWarnings("unchecked")
    public static void launch(String clientClass, String clientName, String[] cp, String[] args)
       throws Throwable
    {
@@ -404,20 +405,22 @@
          deploy(deployment);
          validate();
 
-         ClientContainer client = getBean("ClientContainer", ControllerState.INSTALLED, ClientContainer.class);
-         if(client == null )
-            throw new Exception("ClientContainer bean was not created");
          ClassLoader ccLoader = getBean(classLoaderName, ControllerState.INSTALLED, ClassLoader.class);
          if(ccLoader == null )
             throw new Exception(classLoaderName+" bean was not created");
-         Class<?> mainClass = client.getMainClass();
-         ClassLoader mainClassLoader = mainClass.getClass().getClassLoader();
+         Class<?> clientContainerClass = ccLoader.loadClass(ClientContainer.class.getName());
+         Object client = getBean("ClientContainer", ControllerState.INSTALLED, clientContainerClass);
+         if(client == null )
+            throw new Exception("ClientContainer bean was not created");
+         Method method = clientContainerClass.getMethod("getMainClass");
+         Class<?> mainClass = (Class) method.invoke(client);
+         ClassLoader mainClassLoader = mainClass.getClassLoader();
          if(ccLoader != mainClassLoader)
             throw new Exception(ccLoader+" != "+mainClassLoader);
 
          // Invoke main on the underlying client main class
          Class<?> parameterTypes[] = { args.getClass() };
-         Method method = client.getClass().getDeclaredMethod("invokeMain", parameterTypes);
+         method = clientContainerClass.getDeclaredMethod("invokeMain", parameterTypes);
          method.invoke(client, (Object) args);
 
          undeploy(deployment);




More information about the jboss-cvs-commits mailing list