package org.erlide.runtime.api;
import org.erlide.runtime.runtimeinfo.IRuntimeInfoCatalog;
import org.erlide.runtime.runtimeinfo.IRuntimeInfoSerializer;
import org.erlide.runtime.runtimeinfo.RuntimeInfo;
import org.erlide.runtime.runtimeinfo.RuntimeInfoCatalog;
import org.erlide.runtime.runtimeinfo.RuntimeInfoCatalogData;
import org.erlide.util.ErlLogger;
import org.erlide.util.HostnameChecker;
public class RuntimeCore {
private static RuntimeInfoCatalog runtimeInfoCatalog;
public static final synchronized IRuntimeInfoCatalog getRuntimeInfoCatalog(
final IRuntimeInfoSerializer serializer) {
if (runtimeInfoCatalog == null) {
final RuntimeInfoCatalogData data = serializer.load();
runtimeInfoCatalog = new RuntimeInfoCatalog();
runtimeInfoCatalog.setRuntimes(data.runtimes, data.defaultRuntimeName,
data.erlideRuntimeName);
final RuntimeInfo runtime = runtimeInfoCatalog.getErlideRuntime();
if (!HostnameChecker.getInstance().detectHostNames(runtime.getOtpHome())) {
// XXX show troubleshooting page and re-detect
ErlLogger.error("no matching hostnames found!! Edit ~/.erlide.hosts");
}
}
return runtimeInfoCatalog;
}
public static IRuntimeInfoCatalog getRuntimeInfoCatalog() {
if (runtimeInfoCatalog != null) {
return runtimeInfoCatalog;
}
return null;
}
}