diff options
author | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-18 14:38:50 +0200 |
---|---|---|
committer | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-18 15:52:16 +0200 |
commit | 9ed09aa7bd0e0541b45ff6c4ac0238d10769448c (patch) | |
tree | 5bf30cc64ae7b9a28ef6ec787ea405cdb4b9b915 /server/sonar-process/src | |
parent | c3174fada2ab193d03661209bee3291772b8f347 (diff) | |
download | sonarqube-9ed09aa7bd0e0541b45ff6c4ac0238d10769448c.tar.gz sonarqube-9ed09aa7bd0e0541b45ff6c4ac0238d10769448c.zip |
SONAR-5408 - ProcessWrapper passes properties file as args[0]
Diffstat (limited to 'server/sonar-process/src')
-rw-r--r-- | server/sonar-process/src/main/java/org/sonar/process/Process.java | 45 | ||||
-rw-r--r-- | server/sonar-process/src/main/java/org/sonar/process/ProcessWrapper.java | 9 |
2 files changed, 43 insertions, 11 deletions
diff --git a/server/sonar-process/src/main/java/org/sonar/process/Process.java b/server/sonar-process/src/main/java/org/sonar/process/Process.java index f345adf4f42..c511bf7f127 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/Process.java +++ b/server/sonar-process/src/main/java/org/sonar/process/Process.java @@ -19,6 +19,7 @@ */ package org.sonar.process; +import com.google.common.annotations.VisibleForTesting; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,7 +31,10 @@ import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; import java.io.File; +import java.io.FileReader; +import java.io.IOException; import java.lang.management.ManagementFactory; +import java.util.Properties; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -54,11 +58,11 @@ public abstract class Process implements ProcessMXBean { protected Long lastPing; - final String name; - final Integer port; + String name; + Integer port; - final protected Props props; - final private Thread shutdownHook; + protected final Props props; + private Thread shutdownHook; private static final long MAX_ALLOWED_TIME = 3000L; private ScheduledFuture<?> pingTask = null; @@ -75,15 +79,40 @@ public abstract class Process implements ProcessMXBean { } }; + public Process(String[] args) { + // loading arguments from file and system. + if (args.length < 1) { + throw new IllegalStateException("Process is missing argument!"); + } + + File propertyFile = new File(args[0]); + if (!propertyFile.exists()) { + throw new IllegalStateException("Property file '" + args[0] + "' does not exist! "); + } + + Properties properties = new Properties(); + try { + properties.load(new FileReader(propertyFile)); + } catch (IOException e) { + throw new IllegalStateException("Could not read properties from file '" + args[0] + "'", e); + } + props = Props.create(properties); + init(); + } + + @VisibleForTesting public Process(Props props) { - - validateSonarHome(props); - - // Loading all Properties from file this.props = props; + init(); + } + + private void init() { + + // Loading all Properties from file this.name = props.of(NAME_PROPERTY, null); this.port = props.intOf(PORT_PROPERTY); + validateSonarHome(props); // Testing required properties if (StringUtils.isEmpty(this.name)) { diff --git a/server/sonar-process/src/main/java/org/sonar/process/ProcessWrapper.java b/server/sonar-process/src/main/java/org/sonar/process/ProcessWrapper.java index c1b1ff5067b..9e0495eafc3 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/ProcessWrapper.java +++ b/server/sonar-process/src/main/java/org/sonar/process/ProcessWrapper.java @@ -143,7 +143,7 @@ public class ProcessWrapper extends Thread { if (properties.containsKey(Process.JAVA_OPS)) { return properties.get(Process.JAVA_OPS); } else { - return ""; + return null; } } @@ -187,13 +187,16 @@ public class ProcessWrapper extends Thread { ProcessBuilder processBuilder = new ProcessBuilder(); processBuilder.command().add(getJavaCommand()); - processBuilder.command().add(getJavaOptions()); + + String javaOptions = getJavaOptions(); + if (!StringUtils.isEmpty(javaOptions)) { + processBuilder.command().add(getJavaOptions()); + } processBuilder.command().addAll(getJMXOptions()); processBuilder.command().addAll(getClassPath()); processBuilder.command().add(className); processBuilder.command().add(getPropertyFile()); - //TODO remove once Process uses the temp file generated by getPropertyFile(); processBuilder.environment().putAll(properties); |