From 02df1b134cd293baf86bb5428fa74f9ae187e6af Mon Sep 17 00:00:00 2001 From: Ryan Kurtz Date: Wed, 3 Apr 2019 08:13:28 -0400 Subject: [PATCH] GT-2707: Adding in interfaces and package-level stuff to jsondocs. --- .../BuildFiles/JsonDoclet/src/main/java/JsonDoclet.java | 8 +------- gradleScripts/distribution.gradle | 4 ++++ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/GhidraBuild/BuildFiles/JsonDoclet/src/main/java/JsonDoclet.java b/GhidraBuild/BuildFiles/JsonDoclet/src/main/java/JsonDoclet.java index 438b7cb42d..eecabab05e 100644 --- a/GhidraBuild/BuildFiles/JsonDoclet/src/main/java/JsonDoclet.java +++ b/GhidraBuild/BuildFiles/JsonDoclet/src/main/java/JsonDoclet.java @@ -39,8 +39,6 @@ import jdk.javadoc.doclet.*; @SuppressWarnings("unchecked") public class JsonDoclet implements Doclet { - private final Set ACCESS_LEVEL = Set.of(Modifier.PUBLIC); - private Reporter log; private File destDir; @@ -122,8 +120,7 @@ public class JsonDoclet implements Doclet { //@formatter:off ElementFilter.typesIn(docEnv.getIncludedElements()) .stream() - .filter(el -> el.getModifiers().containsAll(ACCESS_LEVEL)) - .filter(el -> el.getKind().equals(ElementKind.CLASS)) + .filter(el -> el.getKind().equals(ElementKind.CLASS) || el.getKind().equals(ElementKind.INTERFACE)) .forEach(el -> writeJsonToFile(classToJson(el), el.getQualifiedName())); //@formatter:on @@ -211,9 +208,6 @@ public class JsonDoclet implements Doclet { JSONArray methodArray = new JSONArray(); for (Element el : classElement.getEnclosedElements()) { - if (!el.getModifiers().containsAll(ACCESS_LEVEL)) { - continue; - } JSONObject obj = new JSONObject(); obj.put("name", el.getSimpleName().toString()); diff --git a/gradleScripts/distribution.gradle b/gradleScripts/distribution.gradle index 7aaf03b2f4..15260c088c 100644 --- a/gradleScripts/distribution.gradle +++ b/gradleScripts/distribution.gradle @@ -134,6 +134,10 @@ task createJsondocs(type: Javadoc, description: 'Generate JSON docs for all proj it.sourceSets.test.compileClasspath }) + // Generate at package level because user may try to get help directly on an object they have + // rather than its public interface. + options.addBooleanOption("package", true) + // Some internal packages are not public and need to be exported. options.addMultilineStringsOption("-add-exports").setValue(["java.desktop/sun.awt.image=ALL-UNNAMED", "java.desktop/sun.awt=ALL-UNNAMED",