/*
* Copyright 2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gradle.launcher.cli.converter;
import org.gradle.api.GradleException;
import org.gradle.internal.jvm.JavaHomeException;
import org.gradle.internal.jvm.JavaInfo;
import org.gradle.internal.jvm.Jvm;
import org.gradle.launcher.daemon.configuration.DaemonParameters;
import org.gradle.process.internal.JvmOptions;
import java.io.File;
import java.util.Map;
import static org.gradle.launcher.daemon.configuration.GradleProperties.*;
public class PropertiesToDaemonParametersConverter {
public void convert(Map<String, String> properties, DaemonParameters target) {
String prop = properties.get(IDLE_TIMEOUT_PROPERTY);
if (prop != null) {
try {
target.setIdleTimeout(new Integer(prop));
} catch (NumberFormatException e) {
throw new GradleException(String.format("Unable to parse %s property. The value should be an int but is: %s", IDLE_TIMEOUT_PROPERTY, prop));
}
}
prop = properties.get(HEALTH_CHECK_INTERVAL_PROPERTY);
if (prop != null) {
try {
target.setPeriodicCheckInterval(new Integer(prop));
} catch (NumberFormatException e) {
throw new GradleException(String.format("Unable to parse %s property. Expected an int but got: %s", HEALTH_CHECK_INTERVAL_PROPERTY, prop), e);
}
}
prop = properties.get(JVM_ARGS_PROPERTY);
if (prop != null) {
target.setJvmArgs(JvmOptions.fromString(prop));
}
prop = properties.get(JAVA_HOME_PROPERTY);
if (prop != null) {
File javaHome = new File(prop);
if (!javaHome.isDirectory()) {
throw new GradleException(String.format("Java home supplied via '%s' is invalid. Invalid directory: %s", JAVA_HOME_PROPERTY, prop));
}
JavaInfo jvm;
try {
jvm = Jvm.forHome(javaHome);
} catch (JavaHomeException e) {
throw new GradleException(String.format("Java home supplied via '%s' seems to be invalid: %s", JAVA_HOME_PROPERTY, prop));
}
target.setJvm(jvm);
}
prop = properties.get(DAEMON_BASE_DIR_PROPERTY);
if (prop != null) {
target.setBaseDir(new File(prop));
}
String daemonEnabledPropertyValue = properties.get(DAEMON_ENABLED_PROPERTY);
if (daemonEnabledPropertyValue != null) {
target.setEnabled(isTrue(daemonEnabledPropertyValue));
}
final String debugEnabledPropertyValue = properties.get(DEBUG_MODE_PROPERTY);
if (debugEnabledPropertyValue != null) {
target.setDebug(isTrue(debugEnabledPropertyValue));
}
}
}