Repository navigation
Expand file tree
/
Copy pathJavaModule.java
More file actions
73 lines (62 loc) · 2.03 KB
/
Copy pathJavaModule.java
File metadata and controls
73 lines (62 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package javakit.resolver;
import snap.util.ListUtils;
import java.util.*;
/**
* This class represents a Java Module.
*/
public class JavaModule extends JavaDecl {
// The child packages
protected List<JavaPackage> _packages;
/**
* Constructor.
*/
public JavaModule(Resolver aResolver, String moduleName)
{
super(aResolver, DeclType.Module);
// Set Name, SimpleName
_id = _name = _simpleName = moduleName;
}
/**
* Returns the child packages.
*/
public List<JavaPackage> getPackages()
{
if (_packages != null) return _packages;
String moduleName = getName();
if (moduleName.equals("java"))
return _packages = Collections.emptyList();
// Lookup the module in the boot layer
Module module = ModuleLayer.boot().findModule(moduleName).orElse(null);
assert module != null;
Set<String> packageNames = module.getPackages();
// Return packages for names (some might be null due to exclusions)
return _packages = ListUtils.mapNonNull(packageNames, _resolver::getJavaPackageForName);
}
/**
* Returns the child for name.
*/
public JavaModule getChildForName(String childName)
{
String moduleName = getName() + '.' + childName;
return _resolver.isKnownModuleName(moduleName) ? _resolver.getJavaModuleForName(moduleName) : null;
}
/**
* Returns a package for given simple class name.
*/
public JavaPackage getPackageForSimpleName(String simpleClassName)
{
for (JavaPackage pkg : getPackages()) {
if (pkg.getChildForName(simpleClassName) instanceof JavaClass)
return pkg;
}
return null;
}
/**
* Returns a full class name for given simple class name.
*/
public String getClassNameForSimpleName(String simpleClassName)
{
JavaPackage pkg = getPackageForSimpleName(simpleClassName);
return pkg != null ? pkg.getName() + '.' + simpleClassName : null;
}
}