1 package org.objectweb.celtix.tools.common; 2 3 import java.lang.reflect.InvocationTargetException ; 4 import java.lang.reflect.Method ; 5 6 import org.objectweb.celtix.configuration.CommandlineConfiguration; 7 8 14 public class ToolWrapperGenerator implements Generator { 15 16 protected final String toolClassName; 17 private final ClassLoader classLoader; 18 private CommandlineConfiguration config; 19 20 26 protected ToolWrapperGenerator(String theToolClassName) { 27 this(theToolClassName, ToolWrapperGenerator.class.getClassLoader()); 28 } 29 30 38 protected ToolWrapperGenerator(String theToolClassName, ClassLoader theClassLoader) { 39 classLoader = theClassLoader; 40 toolClassName = theToolClassName; 41 } 42 43 46 public void generate() { 47 try { 48 Class <?> toolClass = Class.forName(toolClassName, true, classLoader); 49 Method mainMethod = toolClass.getMethod("main", String [].class); 50 mainMethod.invoke(null, (Object )getToolArguments()); 51 } catch (IllegalAccessException ex) { 52 ex.printStackTrace(); 53 } catch (InvocationTargetException ex) { 54 if (ex.getTargetException() != null) { 55 ex.getTargetException().printStackTrace(); 56 } 57 } catch (NoSuchMethodException ex) { 58 ex.printStackTrace(); 59 } catch (ClassNotFoundException ex) { 60 ex.printStackTrace(); 61 } 62 } 63 64 public String getToolClassName() { 65 return toolClassName; 66 } 67 68 69 private String [] getToolArguments() { 70 if (config != null) { 74 return ((ToolConfig)config).getOriginalArgs(); 75 } else { 76 return new String [0]; 77 } 78 } 79 80 public void setConfiguration(CommandlineConfiguration newConfig) { 81 this.config = newConfig; 82 } 83 84 } 85 86 | Popular Tags |