package bluej.parser.entity;

import java.util.List;

import bluej.debugger.gentype.JavaType;
import bluej.debugger.gentype.Reflective;
import threadchecker.OnThread;
import threadchecker.Tag;


| An unresolved subentity (an entity of form xxx.yyy, where yyy is the subentity name). | | @author Davin McCall | public class UnresolvedSubEntity extends JavaEntity{ private JavaEntity parent; private String name; private Reflective accessSource; private List<TypeArgumentEntity> typeArgs;
| Construct a new unresolved sub entity. | @param parent The parent entity | @param name The subentity name | @param accessSource The access source (used for access control) | public UnresolvedSubEntity(JavaEntity parent, String name, Reflective accessSource) { this.parent = parent; this.name = name; this.accessSource = accessSource; } @Override public JavaType getType() { return null; } @Override public JavaEntity getSubentity(String name, Reflective accessSource) { return new UnresolvedSubEntity(this, name, accessSource); } @Override public String getName() { return parent.getName() + "." + name; } @Override public JavaEntity setTypeArgs(List<TypeArgumentEntity> tparams) { UnresolvedSubEntity newEnt = new UnresolvedSubEntity(parent, name, accessSource); newEnt.typeArgs = tparams; return newEnt; } @Override @OnThread(Tag.FXPlatform) public ValueEntity resolveAsValue() { if (typeArgs != null) { return null; } JavaEntity pent = parent.resolveAsValue(); if (pent == null) { pent = parent.resolveAsType(); } if (pent == null) { return null; } JavaEntity subEnt = pent.getSubentity(name, accessSource); if (subEnt == null) { return null; } return subEnt.resolveAsValue(); } @Override public TypeEntity resolveAsType() { PackageOrClass pent = parent.resolveAsPackageOrClass(); if (pent == null) { return null; } JavaEntity subEnt = pent.getPackageOrClassMember(name); if (subEnt == null) { return null; } TypeEntity tentity = subEnt.resolveAsType(); if (tentity != null && typeArgs != null) { tentity = tentity.setTypeArgs(typeArgs); } return tentity; } @Override public PackageOrClass resolveAsPackageOrClass() { if (typeArgs != null) { return resolveAsType(); } PackageOrClass pent = parent.resolveAsPackageOrClass(); if (pent == null) { return null; } JavaEntity subEnt = pent.getPackageOrClassMember(name); if (subEnt == null) { return null; } PackageOrClass pocEnt = subEnt.resolveAsPackageOrClass(); if (pocEnt != null && typeArgs != null) { TypeEntity tent = pocEnt.resolveAsType(); if (tent != null) { return tent.setTypeArgs(typeArgs); } return null; } return pocEnt; } }
top, use, map, class UnresolvedSubEntity

.   UnresolvedSubEntity
.   getType
.   getSubentity
.   getName
.   setTypeArgs
.   resolveAsValue
.   resolveAsType
.   resolveAsPackageOrClass




165 neLoCode + 6 LoComm