KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tcsimulator > ProcessFactory


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tcsimulator;
5
6 import com.tc.process.LinkedJavaProcess;
7 import com.tcsimulator.distrunner.ServerSpec;
8
9 import java.io.File JavaDoc;
10 import java.util.Collection JavaDoc;
11 import java.util.HashSet JavaDoc;
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 JavaDoc className, String JavaDoc[] args, boolean debug) {
24     String JavaDoc[] argsToPass = args;
25     if (argsToPass == null) {
26       argsToPass = new String JavaDoc[] {};
27     }
28     LinkedJavaProcess newProcess = new LinkedJavaProcess(className, argsToPass);
29     String JavaDoc fileSeparator = System.getProperty("file.separator");
30     File JavaDoc terracottaDist = new File JavaDoc(sandbox.getTestHome().getAbsoluteFile(), sandbox.getDistributionName());
31     File JavaDoc dsoJava = new File JavaDoc(terracottaDist.getAbsolutePath() + fileSeparator + "bin" + fileSeparator + "dso-java.sh");
32
33     Collection JavaDoc jvmArgs = new HashSet JavaDoc();
34     jvmArgs.add("-Dtc.config=" + serverSpec.getHostName() + ":" + serverSpec.getDsoPort());
35     //jvmArgs.add("-Dtc.classloader.writeToDisk=true");
36
if (debug) {
37       jvmArgs.add("-Xdebug");
38       jvmArgs.add("-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y");
39     }
40     Collection JavaDoc environment = new HashSet JavaDoc();
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 JavaDoc dir = new File JavaDoc(sandbox.getServerHome(), className);
46     dir.mkdir();
47     newProcess.setDirectory(dir);
48     newProcess.setJavaArguments((String JavaDoc[]) jvmArgs.toArray(new String JavaDoc[jvmArgs.size()]));
49     newProcess.setEnvironment((String JavaDoc[]) environment.toArray(new String JavaDoc[environment.size()]));
50
51     return newProcess;
52   }
53
54   public LinkedJavaProcess newJavaProcessInstance(String JavaDoc className, String JavaDoc[] args, boolean debug, String JavaDoc javaHome) {
55     String JavaDoc[] argsToPass = args;
56     if (argsToPass == null) {
57       argsToPass = new String JavaDoc[] {};
58     }
59     LinkedJavaProcess newProcess = new LinkedJavaProcess(className, argsToPass);
60     File JavaDoc java = new File JavaDoc(javaHome);
61
62     Collection JavaDoc jvmArgs = new HashSet JavaDoc();
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 JavaDoc[]) jvmArgs.toArray(new String JavaDoc[jvmArgs.size()]));
70
71     return newProcess;
72   }
73
74 }
75
Popular Tags