/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.maven.server.execution; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Holds all parameters that needed to start new JVM instance. * <br /> * Set all needed parameters and call {@link #createCommand()} to receive command line. * * @author Evgen Vidolob */ public class JavaParameters { private String workingDirectory; private String javaExecutable; private String jarPath; private String mainClassName; private List<String> classPath = new ArrayList<>(); private List<String> vmParameters = new ArrayList<>(); private Map<String, String> enviroment = new HashMap<>(); public String getJavaExecutable() { return javaExecutable; } public String getMainClassName() { return mainClassName; } public List<String> getClassPath() { return classPath; } public List<String> getVmParameters() { return vmParameters; } public String getWorkingDirectory() { return workingDirectory; } public void setWorkingDirectory(String workingDirectory) { this.workingDirectory = workingDirectory; } public void setJavaExecutable(String javaExecutable) { this.javaExecutable = javaExecutable; } public void setMainClassName(String mainClassName) { this.mainClassName = mainClassName; } public String getJarPath() { return jarPath; } public void setJarPath(String jarPath) { this.jarPath = jarPath; } public Map<String, String> getEnviroment() { return enviroment; } public CommandLine createCommand() { CommandLine result = new CommandLine(javaExecutable); result.getEnvironment().putAll(enviroment); result.addParameters(vmParameters); result.addParameter("-classpath"); result.addParameter(createClasspath(classPath)); if (mainClassName != null) { result.addParameter(mainClassName); } else if (jarPath != null) { result.addParameter("-jar"); result.addParameter(jarPath); } result.setWorkingDirectory(workingDirectory); return result; } private String createClasspath(List<String> classPath) { return classPath.stream().reduce((s, s2) -> s + ":" + s2).get(); } }