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