blob: 94347cc38ac6a936955cb695d54e5101081e7c5e [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2005 BEA Systems, Inc.
* 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:
* Konstantin Komissarchik - initial API and implementation
* IBM Corporation - Support for all server types
******************************************************************************/
package org.eclipse.jst.server.core.internal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.jdt.launching.IVMInstall;
import org.eclipse.jdt.launching.IVMInstall2;
import org.eclipse.jst.server.core.IJavaRuntime;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeBridge;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.ServerCore;
/**
*
*/
public final class RuntimeBridge implements IRuntimeBridge {
private static Map mappings = new HashMap();
static {
initialize();
}
private static void addMapping(String id, String id2, String version) {
try {
mappings.put(id, RuntimeManager.getRuntimeComponentType(id2).getVersion(version));
} catch (Exception e) {
// ignore
}
}
private static void initialize() {
addMapping("org.eclipse.jst.server.tomcat.runtime.32", "org.eclipse.jst.server.tomcat", "3.2");
addMapping("org.eclipse.jst.server.tomcat.runtime.40", "org.eclipse.jst.server.tomcat", "4.0");
addMapping("org.eclipse.jst.server.tomcat.runtime.41", "org.eclipse.jst.server.tomcat", "4.1");
addMapping("org.eclipse.jst.server.tomcat.runtime.50", "org.eclipse.jst.server.tomcat", "5.0");
addMapping("org.eclipse.jst.server.tomcat.runtime.55", "org.eclipse.jst.server.tomcat", "5.5");
// generic runtimes
addMapping("org.eclipse.jst.server.generic.runtime.weblogic81", "org.eclipse.jst.server.generic.runtime.weblogic", "8.1");
addMapping("org.eclipse.jst.server.generic.runtime.weblogic90", "org.eclipse.jst.server.generic.runtime.weblogic", "9.0");
addMapping("org.eclipse.jst.server.generic.runtime.jboss323", "org.eclipse.jst.server.generic.runtime.jboss", "3.2.3");
addMapping("org.eclipse.jst.server.generic.runtime.jonas4", "org.eclipse.jst.server.generic.runtime.jonas", "4.0");
addMapping("org.eclipse.jst.server.generic.runtime.oracle1013dp4", "org.eclipse.jst.server.generic.runtime.oracle", "1013dp4");
addMapping("org.eclipse.jst.server.generic.runtime.websphere.6", "org.eclipse.jst.server.generic.runtime.websphere", "6.0");
}
public void port() {
// delete old runtimes
Iterator iterator = RuntimeManager.getRuntimes().iterator();
while (iterator.hasNext()) {
org.eclipse.wst.common.project.facet.core.runtime.IRuntime runtime =
(org.eclipse.wst.common.project.facet.core.runtime.IRuntime) iterator.next();
if ("true".equals(runtime.getProperty("server")))
RuntimeManager.deleteRuntime(runtime);
}
// create/bridge existing runtimes
IRuntime[] runtimes = ServerCore.getRuntimes();
for (int i = 0; i < runtimes.length; i++) {
IRuntime runtime = runtimes[i];
String typeId = runtime.getRuntimeType().getId();
//if (!RuntimeManager.isRuntimeDefined(typeId)) {
IRuntimeComponentVersion mapped = (IRuntimeComponentVersion) mappings.get(typeId);
if (mapped != null) {
List components = new ArrayList(2);
String name = runtime.getName();
// define server runtime component
Map properties = new HashMap();
properties.put("location", runtime.getLocation().toPortableString());
properties.put("name", name);
properties.put("type", runtime.getRuntimeType().getName());
properties.put("id", runtime.getId());
components.add(RuntimeManager.createRuntimeComponent(mapped, properties));
// define JRE component
IJavaRuntime javaRuntime = (IJavaRuntime) runtime.loadAdapter(IJavaRuntime.class, null);
if (javaRuntime != null) {
IVMInstall vmInstall = javaRuntime.getVMInstall();
IVMInstall2 vmInstall2 = (IVMInstall2) vmInstall;
String jvmver = vmInstall2.getJavaVersion();
IRuntimeComponentVersion rcv;
if (jvmver.startsWith("1.4")) {
rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
} else if (jvmver.startsWith("1.5")) {
rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
} else
continue;
properties = new HashMap();
properties.put("name", vmInstall.getName());
components.add(RuntimeManager.createRuntimeComponent(rcv, properties));
}
// define facet runtime
properties = new HashMap();
properties.put("id", runtime.getId());
properties.put("server", "true");
RuntimeManager.defineRuntime(name, components, properties);
}
}
//}
}
}