package bluej.pkgmgr;
import threadchecker.OnThread;
import threadchecker.Tag;
import bluej.debugger.gentype.Reflective;
import bluej.parser.entity.EntityResolver;
import bluej.parser.entity.JavaEntity;
import bluej.parser.entity.PackageEntity;
import bluej.parser.entity.PackageOrClass;
import bluej.parser.entity.TypeEntity;
import bluej.pkgmgr.target.ClassTarget;
import bluej.pkgmgr.target.Target;
| Resolve project entities.
|
| @author Davin McCall
|
@OnThread(value = Tag.FXPlatform, ignoreParent = true)
public class ProjectEntityResolver
implements EntityResolver{
private Project project;
| Construct a ProjectEntityResolver for the given project.
|
public ProjectEntityResolver(Project project)
{
this.project = project;
}
public JavaEntity getValueEntity(String name, Reflective querySource)
{
return resolvePackageOrClass(name, querySource);
}
public PackageOrClass resolvePackageOrClass(String name, Reflective querySource)
{
Class<?> cl = project.loadClass("java.lang." + name);
if (cl != null) {
return new TypeEntity(cl);
}
return new PackageEntity(name, this);
}
public TypeEntity resolveQualifiedClass(String name)
{
int lastDot = name.lastIndexOf('.');
String pkgName = lastDot != -1 ? name.substring(0, lastDot) : "";
String baseName = name.substring(lastDot + 1);
Package pkg = project.getPackage(pkgName);
if (pkg != null) {
Target target = pkg.getTarget(baseName);
if (target instanceof ClassTarget) {
ClassTarget ct = (ClassTarget) target;
Reflective ref = ct.getTypeReflective();
if (ref != null) {
return new TypeEntity(ref);
}
}
}
Class<?> cl = project.loadClass(name);
if (cl != null) {
return new TypeEntity(cl);
}
return null;
}
}
top,
use,
map,
class ProjectEntityResolver
. ProjectEntityResolver
. getValueEntity
. resolvePackageOrClass
. resolveQualifiedClass
79 neLoCode
+ 3 LoComm