/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.util;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.testFramework.LightVirtualFile;
import gw.lang.reflect.module.IModule;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.nio.charset.Charset;
import static com.google.common.base.Preconditions.checkNotNull;
public class LightVirtualFileWithModule {
private static final Key<IModule> LIGHT_VIRTUAL_FILE_MODULE = Key.create("LIGHT_VIRTUAL_FILE_MODULE");
@NotNull
public static LightVirtualFile attachModule(@NotNull LightVirtualFile file, IModule module) {
file.putUserData(LIGHT_VIRTUAL_FILE_MODULE, checkNotNull(module));
return file;
}
@Nullable
public static IModule getModule(@NotNull VirtualFile file) {
return file.getUserData(LIGHT_VIRTUAL_FILE_MODULE);
}
@NotNull
public static LightVirtualFile create(IModule module) {
return attachModule(new LightVirtualFile(), module);
}
@NotNull
public static LightVirtualFile create(@NonNls String name, IModule module) {
return attachModule(new LightVirtualFile(name), module);
}
@NotNull
public static LightVirtualFile create(@NonNls String name, CharSequence content, IModule module) {
return attachModule(new LightVirtualFile(name, content), module);
}
@NotNull
public static LightVirtualFile create(final String name, final FileType fileType, final CharSequence text, IModule module) {
return attachModule(new LightVirtualFile(name, fileType, text), module);
}
@NotNull
public static LightVirtualFile create(VirtualFile original, final CharSequence text, long modificationStamp, IModule module) {
return attachModule(new LightVirtualFile(original, text, modificationStamp), module);
}
@NotNull
public static LightVirtualFile create(final String name, final FileType fileType, final CharSequence text, final long modificationStamp, IModule module) {
return attachModule(new LightVirtualFile(name, fileType, text, modificationStamp), module);
}
@NotNull
public static LightVirtualFile create(final String name, final FileType fileType, final CharSequence text, Charset charset, final long modificationStamp, IModule module) {
return attachModule(new LightVirtualFile(name, fileType, text, charset, modificationStamp), module);
}
}