/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.lang.psi.impl;
import com.intellij.openapi.util.Key;
import com.intellij.psi.PsiElement;
import gw.lang.parser.IGosuValidator;
import gw.lang.parser.ISymbolTable;
import gw.lang.parser.ITypeUsesMap;
import gw.plugin.ij.util.InjectionUtil;
public class InjectionGosuParserConfigurer implements IGosuParserConfigurer {
public static final Key<ISymbolTable> SYMBOL_TABLE = new Key<>("GOSU_SYMBOL_TABLE");
public static final Key<IGosuValidator> VALIDATOR = new Key<>("GOSU_VALIDATOR");
@Override
public ISymbolTable getSymbolTable(AbstractGosuClassFileImpl psiFile) {
PsiElement host = InjectionUtil.getInjectionHost(psiFile);
if (host == null) {
host = psiFile.getOriginalFile();
}
if (host != null) {
final ISymbolTable table = host.getUserData(SYMBOL_TABLE);
if (table != null) {
return table;
}
}
return null;
}
@Override
public ITypeUsesMap getTypeUsesMap(AbstractGosuClassFileImpl psiFile) {
return null;
}
@Override
public IGosuValidator getValidator(AbstractGosuClassFileImpl psiFile) {
PsiElement host = InjectionUtil.getInjectionHost(psiFile);
if (host == null) {
host = psiFile.getOriginalFile();
}
if (host != null) {
final IGosuValidator validator = host.getUserData(VALIDATOR);
if (validator != null) {
return validator;
}
}
return null;
}
}