blob: 899f9d6380e41b1823e0b22d98676961d577363a [file] [log] [blame]
package org.eclipse.dltk.utils;
import java.io.File;
import java.io.IOException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.core.environment.IEnvironment;
import org.eclipse.dltk.core.environment.IFileHandle;
import org.eclipse.osgi.service.datalocation.Location;
public class PlatformFileUtils {
public static IFileHandle findAbsoluteOrEclipseRelativeFile(
IEnvironment env, IPath path) {
if (path == null || path.isEmpty()) {
throw new IllegalArgumentException(
Messages.PlatformFileUtils_pathMustNotBeEmpty);
}
IFileHandle file = env.getFile(path);
if (env.isLocal() && !file.exists() && !path.isAbsolute()) {
Location location = Platform.getInstallLocation();
if (location != null) {
try {
String loc = FileLocator.resolve(location.getURL())
.getPath();
IFileHandle nfile = env.getFile(new Path(loc).append(path));
if (nfile.exists()) {
return nfile;
}
} catch (IOException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
}
}
location = Platform.getInstanceLocation();
if (location != null) {
try {
String loc = FileLocator.resolve(location.getURL())
.getPath();
IFileHandle nfile = env.getFile(new Path(loc).append(path));
if (nfile.exists()) {
return nfile;
}
} catch (IOException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
}
}
}
return file;
}
public static File findAbsoluteOrEclipseRelativeFile(File file) {
return file;
}
}