package bluej.parser;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
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.ParsedReflective;
import bluej.parser.entity.TypeEntity;
import bluej.parser.nodes.ParsedCUNode;
import bluej.parser.nodes.ParsedTypeNode;
import bluej.utility.JavaNames;
| An entity resolver for testing purposes.
|
| @author Davin McCall
|
public class TestEntityResolver
implements EntityResolver{
private EntityResolver parent;
| A map from package name to a list of compilation units in that package
|
private Map<String,List<ParsedCUNode>> pkgMap = new HashMap<String,List<ParsedCUNode>>();
public TestEntityResolver(EntityResolver parent)
{
this.parent = parent;
}
| Add a compilation unit for the given package.
|
public void addCompilationUnit(String pkg, ParsedCUNode cunit)
{
if (cunit == null) {
throw new NullPointerException();
}
List<ParsedCUNode> clist = pkgMap.get(pkg);
if (clist == null) {
clist = new LinkedList<ParsedCUNode>();
pkgMap.put(pkg, clist);
}
clist.add(cunit);
}
private String getPackageFromClassName(String className)
{
int lastdot = className.lastIndexOf('.');
if (lastdot == -1) {
return "";
}
return className.substring(0, lastdot);
}
public PackageOrClass resolvePackageOrClass(String name, Reflective querySource)
{
return new PackageEntity(name, this);
}
public TypeEntity resolveQualifiedClass(String name)
{
String pkg = getPackageFromClassName(name);
List<ParsedCUNode> culist = pkgMap.get(pkg);
if (culist != null) {
for (ParsedCUNode node : culist) {
String baseName = JavaNames.getBase(name);
ParsedTypeNode ptn = (ParsedTypeNode) node.getTypeNode(baseName);
if (ptn != null) {
return new TypeEntity(new ParsedReflective(ptn));
}
}
}
return parent.resolveQualifiedClass(name);
}
public JavaEntity getValueEntity(String name, Reflective querySource)
{
return resolvePackageOrClass(name, querySource);
}
}
top,
use,
map,
class TestEntityResolver
. TestEntityResolver
. addCompilationUnit
. getPackageFromClassName
. resolvePackageOrClass
. resolveQualifiedClass
. getValueEntity
98 neLoCode
+ 4 LoComm