use of org.eclipse.jst.server.preview.adapter.internal.IMemento in project webtools.servertools by eclipse.
the class PreviewServerBehaviour method setupLaunch.
/**
* Setup for starting the server.
*
* @param launch ILaunch
* @param launchMode String
* @param monitor IProgressMonitor
* @throws CoreException if anything goes wrong
*/
protected void setupLaunch(ILaunch launch, String launchMode, IProgressMonitor monitor) throws CoreException {
// check that ports are free
ServerPort[] ports = getPreviewServer().getServerPorts();
int port = ports[0].getPort();
if (SocketUtil.isPortInUse(port, 5))
throw new CoreException(new Status(IStatus.ERROR, PreviewPlugin.PLUGIN_ID, 0, NLS.bind(Messages.errorPortInUse, new String[] { port + "", getServer().getName() }), null));
// generate preview config file
XMLMemento memento = XMLMemento.createWriteRoot("server");
memento.putInteger("port", port);
IModule[] modules = getServer().getModules();
for (IModule module : modules) {
IMemento mod = memento.createChild("module");
mod.putString("name", module.getName());
String type = module.getModuleType().getId();
if ("wst.web".equals(type)) {
IStaticWeb staticWeb = (IStaticWeb) module.loadAdapter(IStaticWeb.class, null);
if (staticWeb != null)
mod.putString("context", staticWeb.getContextRoot());
mod.putString("type", "static");
} else if ("jst.web".equals(type)) {
IWebModule webModule = (IWebModule) module.loadAdapter(IWebModule.class, null);
if (webModule != null)
mod.putString("context", webModule.getContextRoot());
mod.putString("type", "j2ee");
}
mod.putString("path", getModulePublishDirectory(module).toPortableString());
}
try {
memento.saveToFile(getTempDirectory().append("preview.xml").toOSString());
} catch (IOException e) {
Trace.trace(Trace.SEVERE, "Could not write preview config", e);
throw new CoreException(new Status(IStatus.ERROR, PreviewPlugin.PLUGIN_ID, 0, "Could not write preview configuration", null));
}
setServerRestartState(false);
setServerState(IServer.STATE_STARTING);
setMode(launchMode);
// ping server to check for startup
try {
String url = "http://localhost";
if (port != 80)
url += ":" + port;
ping = new PingThread(getServer(), url, this);
} catch (Exception e) {
Trace.trace(Trace.SEVERE, "Can't ping for Tomcat startup.");
}
}
Aggregations