1 4 package com.tcsimulator; 5 6 import com.tc.process.LinkedJavaProcess; 7 import com.tcsimulator.distrunner.ServerSpec; 8 9 import java.io.File ; 10 import java.util.Collection ; 11 import java.util.HashSet ; 12 13 public final class ProcessFactory { 14 15 private final Sandbox sandbox; 16 private final ServerSpec serverSpec; 17 18 public ProcessFactory(Sandbox sandbox, ServerSpec serverSpec) { 19 this.sandbox = sandbox; 20 this.serverSpec = serverSpec; 21 } 22 23 public LinkedJavaProcess newDSOJavaProcessInstance(String className, String [] args, boolean debug) { 24 String [] argsToPass = args; 25 if (argsToPass == null) { 26 argsToPass = new String [] {}; 27 } 28 LinkedJavaProcess newProcess = new LinkedJavaProcess(className, argsToPass); 29 String fileSeparator = System.getProperty("file.separator"); 30 File terracottaDist = new File (sandbox.getTestHome().getAbsoluteFile(), sandbox.getDistributionName()); 31 File dsoJava = new File (terracottaDist.getAbsolutePath() + fileSeparator + "bin" + fileSeparator + "dso-java.sh"); 32 33 Collection jvmArgs = new HashSet (); 34 jvmArgs.add("-Dtc.config=" + serverSpec.getHostName() + ":" + serverSpec.getDsoPort()); 35 if (debug) { 37 jvmArgs.add("-Xdebug"); 38 jvmArgs.add("-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y"); 39 } 40 Collection environment = new HashSet (); 41 if ("Mac OS X".equals(System.getProperty("os.name")) || "Linux".equals(System.getProperty("os.name"))) { 42 environment.add("TC_JAVA_HOME=" + System.getProperty("java.home")); 43 } 44 newProcess.setJavaExecutable(dsoJava); 45 File dir = new File (sandbox.getServerHome(), className); 46 dir.mkdir(); 47 newProcess.setDirectory(dir); 48 newProcess.setJavaArguments((String []) jvmArgs.toArray(new String [jvmArgs.size()])); 49 newProcess.setEnvironment((String []) environment.toArray(new String [environment.size()])); 50 51 return newProcess; 52 } 53 54 public LinkedJavaProcess newJavaProcessInstance(String className, String [] args, boolean debug, String javaHome) { 55 String [] argsToPass = args; 56 if (argsToPass == null) { 57 argsToPass = new String [] {}; 58 } 59 LinkedJavaProcess newProcess = new LinkedJavaProcess(className, argsToPass); 60 File java = new File (javaHome); 61 62 Collection jvmArgs = new HashSet (); 63 if (debug) { 64 jvmArgs.add("-Xdebug"); 65 jvmArgs.add("-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y"); 66 } 67 68 newProcess.setJavaExecutable(java); 69 newProcess.setJavaArguments((String []) jvmArgs.toArray(new String [jvmArgs.size()])); 70 71 return newProcess; 72 } 73 74 } 75
| Popular Tags
|