From 25c4d95cd51429feee002187eba3dc0acfbb4d3e Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Mon, 18 Feb 2002 09:08:08 +0000 Subject: [PATCH] Start simplifying so that metrics task does not complain as much git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271410 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/myrmidon/launcher/Main.java | 53 +++++++++++++------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java index 2e9e7b295..50b3115e2 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java @@ -39,24 +39,11 @@ public final class Main final File installDirectory = findInstallDir(); System.setProperty( "myrmidon.home", installDirectory.toString() ); - //setup classloader appropriately for myrmidon jar - final File libDir = new File( installDirectory, "lib" ); - final URL[] libUrls = buildURLList( libDir ); - final URLClassLoader libClassLoader = new URLClassLoader( libUrls ); - - final File containerLibDir = new File( installDirectory, "bin" + File.separator + "lib" ); - final URL[] containerLibUrls = buildURLList( containerLibDir ); + final URLClassLoader sharedClassLoader = createSharedClassLoader( installDirectory ); final URLClassLoader classLoader = - new URLClassLoader( containerLibUrls, libClassLoader ); - - //load class and retrieve appropriate main method. - final Class clazz = classLoader.loadClass( "org.apache.myrmidon.frontends.CLIMain" ); - final Method method = clazz.getMethod( "main", new Class[]{args.getClass()} ); - - Thread.currentThread().setContextClassLoader( classLoader ); + createContainerClassLoader( installDirectory, sharedClassLoader ); - //kick the tires and light the fires.... - method.invoke( null, new Object[]{args} ); + execMainClass( classLoader, args ); } catch( final InvocationTargetException ite ) { @@ -70,6 +57,40 @@ public final class Main } } + private static void execMainClass( final URLClassLoader classLoader, final String[] args ) + throws Exception + { + //load class and retrieve appropriate main method. + final Class clazz = classLoader.loadClass( "org.apache.myrmidon.frontends.CLIMain" ); + final Method method = clazz.getMethod( "main", new Class[]{args.getClass()} ); + + Thread.currentThread().setContextClassLoader( classLoader ); + + //kick the tires and light the fires.... + method.invoke( null, new Object[]{args} ); + } + + private static URLClassLoader createContainerClassLoader( final File installDirectory, + final URLClassLoader sharedClassLoader ) + throws Exception + { + final File containerLibDir = new File( installDirectory, "bin" + File.separator + "lib" ); + final URL[] containerLibUrls = buildURLList( containerLibDir ); + final URLClassLoader classLoader = + new URLClassLoader( containerLibUrls, sharedClassLoader ); + return classLoader; + } + + private static URLClassLoader createSharedClassLoader( final File installDirectory ) + throws Exception + { + //setup classloader appropriately for myrmidon jar + final File libDir = new File( installDirectory, "lib" ); + final URL[] libUrls = buildURLList( libDir ); + final URLClassLoader libClassLoader = new URLClassLoader( libUrls ); + return libClassLoader; + } + private static final URL[] buildURLList( final File dir ) throws Exception {