Skip to content

Commit

Permalink
Fix parent package traversal in JDK 9+
Browse files Browse the repository at this point in the history
Fixes #736.
  • Loading branch information
Stephan202 committed Dec 18, 2018
1 parent 0e81280 commit cfcae50
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
Expand Up @@ -723,7 +723,7 @@ public String name() {
@Value.Lazy
Optional<DeclaringPackage> namedParentPackage() {
String parentPackageName = SourceNames.parentPackageName(element());
if (!parentPackageName.isEmpty()) {
while (!parentPackageName.isEmpty()) {
@Nullable PackageElement parentPackage =
environment().processing()
.getElementUtils()
Expand All @@ -737,6 +737,11 @@ Optional<DeclaringPackage> namedParentPackage() {
.element(parentPackage)
.build()));
}

// With JDK 9+ package elements are only returned for packages with a
// `package-info.class` file. So although the parent may not be found,
// there may be "ancestor packages" further up the hierarchy.
parentPackageName = SourceNames.parentPackageName(parentPackageName);
}
return Optional.absent();
}
Expand Down
Expand Up @@ -46,7 +46,10 @@ private static boolean isTypeElement(Element element) {
}

static String parentPackageName(PackageElement element) {
String qualifiedName = element.getQualifiedName().toString();
return parentPackageName(element.getQualifiedName().toString());
}

static String parentPackageName(String qualifiedName) {
int lastIndexOfDot = qualifiedName.lastIndexOf('.');
if (lastIndexOfDot > 0) {
return qualifiedName.substring(0, lastIndexOfDot);
Expand Down

0 comments on commit cfcae50

Please sign in to comment.