|
|
|
@ -258,50 +258,50 @@ public class TestChooser extends JDialog { |
|
|
|
|
new Thread(new Runnable(){ |
|
|
|
|
public void run(){ |
|
|
|
|
for (int i = 0; i < appClass.size(); i++) { |
|
|
|
|
Class<?> clazz = (Class)appClass.get(i); |
|
|
|
|
try { |
|
|
|
|
if (LegacyApplication.class.isAssignableFrom(clazz)) { |
|
|
|
|
Object app = clazz.newInstance(); |
|
|
|
|
if (app instanceof SimpleApplication) { |
|
|
|
|
final Method settingMethod = clazz.getMethod("setShowSettings", boolean.class); |
|
|
|
|
settingMethod.invoke(app, showSetting); |
|
|
|
|
} |
|
|
|
|
final Method mainMethod = clazz.getMethod("start"); |
|
|
|
|
mainMethod.invoke(app); |
|
|
|
|
Field contextField = LegacyApplication.class.getDeclaredField("context"); |
|
|
|
|
contextField.setAccessible(true); |
|
|
|
|
JmeContext context = null; |
|
|
|
|
while (context == null) { |
|
|
|
|
context = (JmeContext) contextField.get(app); |
|
|
|
|
Thread.sleep(100); |
|
|
|
|
} |
|
|
|
|
while (!context.isCreated()) { |
|
|
|
|
Thread.sleep(100); |
|
|
|
|
} |
|
|
|
|
while (context.isCreated()) { |
|
|
|
|
Thread.sleep(100); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
Class<?> clazz = (Class)appClass.get(i); |
|
|
|
|
try { |
|
|
|
|
if (LegacyApplication.class.isAssignableFrom(clazz)) { |
|
|
|
|
Object app = clazz.newInstance(); |
|
|
|
|
if (app instanceof SimpleApplication) { |
|
|
|
|
final Method settingMethod = clazz.getMethod("setShowSettings", boolean.class); |
|
|
|
|
settingMethod.invoke(app, showSetting); |
|
|
|
|
} |
|
|
|
|
final Method mainMethod = clazz.getMethod("start"); |
|
|
|
|
mainMethod.invoke(app); |
|
|
|
|
Field contextField = LegacyApplication.class.getDeclaredField("context"); |
|
|
|
|
contextField.setAccessible(true); |
|
|
|
|
JmeContext context = null; |
|
|
|
|
while (context == null) { |
|
|
|
|
context = (JmeContext) contextField.get(app); |
|
|
|
|
Thread.sleep(100); |
|
|
|
|
} |
|
|
|
|
while (!context.isCreated()) { |
|
|
|
|
Thread.sleep(100); |
|
|
|
|
} |
|
|
|
|
while (context.isCreated()) { |
|
|
|
|
Thread.sleep(100); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
final Method mainMethod = clazz.getMethod("main", (new String[0]).getClass()); |
|
|
|
|
mainMethod.invoke(clazz, new Object[]{new String[0]}); |
|
|
|
|
} |
|
|
|
|
// wait for destroy
|
|
|
|
|
System.gc(); |
|
|
|
|
} catch (IllegalAccessException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "Cannot access constructor: "+clazz.getName(), ex); |
|
|
|
|
} catch (IllegalArgumentException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "main() had illegal argument: "+clazz.getName(), ex); |
|
|
|
|
} catch (InvocationTargetException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "main() method had exception: "+clazz.getName(), ex); |
|
|
|
|
} catch (InstantiationException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "Failed to create app: "+clazz.getName(), ex); |
|
|
|
|
} catch (NoSuchMethodException ex){ |
|
|
|
|
logger.log(Level.SEVERE, "Test class doesn't have main method: "+clazz.getName(), ex); |
|
|
|
|
} catch (Exception ex) { |
|
|
|
|
logger.log(Level.SEVERE, "Cannot start test: "+clazz.getName(), ex); |
|
|
|
|
} |
|
|
|
|
// wait for destroy
|
|
|
|
|
System.gc(); |
|
|
|
|
} catch (IllegalAccessException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "Cannot access constructor: "+clazz.getName(), ex); |
|
|
|
|
} catch (IllegalArgumentException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "main() had illegal argument: "+clazz.getName(), ex); |
|
|
|
|
} catch (InvocationTargetException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "main() method had exception: "+clazz.getName(), ex); |
|
|
|
|
} catch (InstantiationException ex) { |
|
|
|
|
logger.log(Level.SEVERE, "Failed to create app: "+clazz.getName(), ex); |
|
|
|
|
} catch (NoSuchMethodException ex){ |
|
|
|
|
logger.log(Level.SEVERE, "Test class doesn't have main method: "+clazz.getName(), ex); |
|
|
|
|
} catch (Exception ex) { |
|
|
|
|
logger.log(Level.SEVERE, "Cannot start test: "+clazz.getName(), ex); |
|
|
|
|
ex.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}).start(); |
|
|
|
|
} |
|
|
|
|