package bluej.parser.entity;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import bluej.debugger.gentype.JavaType;
import bluej.debugger.gentype.Reflective;
| Represents an unresolved sequence of names from an import statement, which should
| when resolved refer to a class or (for wildcard imports) a package.
|
| @author Davin McCall
|
public class ImportedEntity
extends JavaEntity{
private EntityResolver resolver;
private List<String> names;
private Reflective querySource;
| Create an ImportEntity with the given attributes.
|
public ImportedEntity(EntityResolver resolver, List<String> names,
Reflective querySource)
{
this.resolver = resolver;
this.names = names;
this.querySource = querySource;
}
@Override
public String getName()
{
return names.stream().collect(Collectors.joining("."));
}
@Override
public JavaEntity getSubentity(String name, Reflective accessSource)
{
List<String> newNames = new LinkedList<String>();
newNames.addAll(names);
newNames.add(name);
return new ImportedEntity(resolver, newNames, querySource);
}
@Override
public JavaType getType()
{
return null;
}
@Override
public JavaEntity setTypeArgs(List<TypeArgumentEntity> tparams)
{
return null;
}
@Override
public ValueEntity resolveAsValue()
{
return null;
}
@Override
public TypeEntity resolveAsType()
{
PackageOrClass poc = resolveAsPackageOrClass();
if (poc != null) {
return poc.resolveAsType();
}
return null;
}
@Override
public PackageOrClass resolveAsPackageOrClass()
{
Iterator<String> i = names.iterator();
if (! i.hasNext()) {
return null;
}
String fqName = i.next();
PackageOrClass poc = new PackageEntity(fqName, resolver);
while (i.hasNext()){
poc = poc.getPackageOrClassMember(i.next());
if (poc == null) {
return null;
}
}
return poc;
}
}
top,
use,
map,
class ImportedEntity
. ImportedEntity
. getName
. getSubentity
. getType
. setTypeArgs
. resolveAsValue
. resolveAsType
. resolveAsPackageOrClass
121 neLoCode
+ 4 LoComm