blob: c011bb5682d2a18cf0b4dc7febda321c1644412f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Angelo Zerr and others.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - Initial API and implementation
*******************************************************************************/
package org.eclipse.jst.server.jetty.core.internal.util;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.jst.server.jetty.core.internal.JettyConstants;
import org.eclipse.jst.server.jetty.core.internal.JettyServer;
import org.eclipse.jst.server.jetty.core.internal.JettyServerBehaviour;
import org.eclipse.jst.server.jetty.core.internal.Trace;
public class JettyVersionHelper implements JettyConstants
{
public static IStatus checkJettyVersion(IPath installPath)
{
// Search start.jar
IPath startJarPath = installPath.append(START_JAR);
File jarFile = null;
jarFile = startJarPath.toFile();
// If jar is not at expected location, try alternate location
if (!jarFile.exists())
{
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
/**
* Gets the base directory for this server. This directory is used as the "base" property for the server.
*
* @param ts
* JettyServer from which to derive the base directory directory. Only used to get the temp directory if needed.
* @return path to base directory
*/
public static IPath getStandardBaseDirectory(JettyServer ts)
{
if (ts.isTestEnvironment())
{
String baseDir = ts.getInstanceDirectory();
// If test mode and no instance directory specified, use temporary
// directory
if (baseDir == null)
{
JettyServerBehaviour tsb = (JettyServerBehaviour)ts.getServer().loadAdapter(JettyServerBehaviour.class,null);
if (tsb == null)
{
return null;
}
return tsb.getTempDirectory();
}
IPath path = new Path(baseDir);
if (!path.isAbsolute())
{
IPath rootPath = ResourcesPlugin.getWorkspace().getRoot().getLocation();
path = rootPath.append(path);
}
// Return specified instance directory
return path;
}
// Return runtime path
return ts.getServer().getRuntime().getLocation();
}
/**
* Gets the startup VM arguments for the Jetty server.
*
* @param installPath
* installation path for the server
* @param instancePath
* instance path for the server
* @param deployPath
* deploy path for the server
* @param isTestEnv
* test environment flag
* @return array of strings containing VM arguments
*/
public static String[] getJettyVMArguments(IPath installPath, IPath instancePath, IPath deployPath, String endorsedDirs, boolean isTestEnv)
{
List<String> list = new ArrayList<String>();
if (isTestEnv)
{
list.add("-Djetty.home=\"" + instancePath.toOSString() + "\"");
list.add("-DSTART=\"" + instancePath.toOSString() + "/start.config\"");
list.add("-Dinstall.jetty.home=\"" + installPath.toOSString() + "\"");
}
else
list.add("-Djetty.home=\"" + installPath.toOSString() + "\"");
// if (isTestEnv)
// list.add("-Djetty.base=\"" + instancePath.toOSString() + "\"");
// else
// list.add("-Djetty.base=\"" + installPath.toOSString() + "\"");
// list.add("-Djetty.home=\"" + installPath.toOSString() + "\"");
// Include a system property for the configurable deploy location
// list.add("-Dwtp.deploy=\"" + deployPath.toOSString() + "\"");
// list.add("-Djava.endorsed.dirs=\"" + endorsedDirs + "\"");
list.add("-DVERBOSE");
// list.add("-Djetty.port=8081");
// list.add("-Djetty.port=8081");
list.add("-DSTOP.PORT=8082");
list.add("-DSTOP.KEY=secret");
String[] s = new String[list.size()];
list.toArray(s);
return s;
}
public static String[] getJettyProgramArguments(IPath configPath, boolean debug, boolean starting)
{
List<String> list = new ArrayList<String>();
if (starting)
{
// list.add(configPath.toOSString() + "/etc/jetty.xml");
// list.add(configPath.toOSString() + "/etc/jetty-deploy.xml");
}
else
list.add("--stop");
String[] temp = new String[list.size()];
list.toArray(temp);
return temp;
}
/**
* Creates a Jetty instance directory at the specified path. This involves creating the set of subdirectories uses by a Jetty instance.
*
* @param baseDir
* directory at which to create Jetty instance directories.
* @return result status of the operation
*/
public static IStatus createJettyInstanceDirectory(IPath baseDir)
{
if (Trace.isTraceEnabled())
Trace.trace(Trace.FINER,"Creating runtime directory at " + baseDir.toOSString());
File temp = baseDir.append("contexts").toFile();
if (!temp.exists())
temp.mkdirs();
temp = baseDir.append("etc").toFile();
if (!temp.exists())
temp.mkdirs();
temp = baseDir.append("resources").toFile();
if (!temp.exists())
temp.mkdirs();
temp = baseDir.append("webapps").toFile();
if (!temp.exists())
temp.mkdirs();
return Status.OK_STATUS;
}
}