staticvoid checkExports(ModuleDescriptor md) { // build a map of upgradeable module to Exports that are qualified to it // skip the qualified exports
Map<String, Set<Exports>> targetToExports = new HashMap<>();
md.exports().stream()
.filter(Exports::isQualified)
.forEach(e -> e.targets().stream()
.filter(mn -> accept(md, mn))
.forEach(t -> targetToExports.computeIfAbsent(t, _k -> new HashSet<>())
.add(e)));
if (targetToExports.size() > 0) {
String mn = md.name();
// no qualified exports to upgradeable modules are expected // except the known exception cases if (targetToExports.entrySet().stream()
.flatMap(e -> e.getValue().stream())
.anyMatch(e -> !KNOWN_EXCEPTIONS.contains(mn + "/" + e.source()))) { thrownew RuntimeException(mn + " can't export package to upgradeable modules");
}
}
}
staticvoid checkOpens(ModuleDescriptor md) { // build a map of upgradeable module to Exports that are qualified to it // skip the qualified exports
Map<String, Set<Opens>> targetToOpens = new HashMap<>();
md.opens().stream()
.filter(Opens::isQualified)
.forEach(e -> e.targets().stream()
.filter(mn -> accept(md, mn))
.forEach(t -> targetToOpens.computeIfAbsent(t, _k -> new HashSet<>())
.add(e)));
if (targetToOpens.size() > 0) {
String mn = md.name();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.