From 25dbc2cdb774dad0f903e67adb49066805cdea0c Mon Sep 17 00:00:00 2001 From: Allen Wittenauer Date: Wed, 29 Apr 2026 11:46:43 -0700 Subject: [PATCH 1/4] YETUS-1271. Fix javadoc build --- .../java/org/apache/yetus/audience/InterfaceAudience.java | 4 +++- .../java/org/apache/yetus/audience/InterfaceStability.java | 4 ++++ .../tools/ExcludePrivateAnnotationsStandardDoclet.java | 6 ++++++ .../tools/IncludePublicAnnotationsStandardDoclet.java | 5 +++++ pom.xml | 2 +- .../apache/yetus/maven/plugin/fileops/CreateDirsMojo.java | 5 +++++ .../yetus/maven/plugin/fileops/CreateSymLinkMojo.java | 5 +++++ .../apache/yetus/maven/plugin/fileops/MakeBins4Libs.java | 5 +++++ 8 files changed, 34 insertions(+), 2 deletions(-) diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java index dac0e6f34..386ee1dc2 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java @@ -61,6 +61,7 @@ public class InterfaceAudience { @Documented @Retention(RetentionPolicy.RUNTIME) public @interface LimitedPrivate { + /** The list of projects with access. */ String[] value(); } @@ -71,5 +72,6 @@ public class InterfaceAudience { @Retention(RetentionPolicy.RUNTIME) public @interface Private { } - private InterfaceAudience() { } // Audience can't exist on its own + /** Audience can't exist on its own. */ + private InterfaceAudience() { } } diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java index af7549ff2..cd8358826 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java @@ -40,6 +40,10 @@ @InterfaceAudience.Public @InterfaceStability.Evolving public class InterfaceStability { + /** Default constructor. */ + public InterfaceStability() { + } + /** * Can evolve while retaining compatibility for minor release boundaries. * can break compatibility only at major release (ie. at m.0). diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java index f64599967..d82ca85e8 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java @@ -37,6 +37,12 @@ @InterfaceAudience.Public @InterfaceStability.Evolving public class ExcludePrivateAnnotationsStandardDoclet extends StandardDoclet { + /** Default constructor. */ + public ExcludePrivateAnnotationsStandardDoclet() { + super(); + } + + /** The doclet environment processor. */ protected DocletEnvironmentProcessor processor = new DocletEnvironmentProcessor(); @Override diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/IncludePublicAnnotationsStandardDoclet.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/IncludePublicAnnotationsStandardDoclet.java index 3b308d1a0..0f45fd0b7 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/IncludePublicAnnotationsStandardDoclet.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/IncludePublicAnnotationsStandardDoclet.java @@ -38,6 +38,11 @@ @InterfaceStability.Evolving public class IncludePublicAnnotationsStandardDoclet extends ExcludePrivateAnnotationsStandardDoclet { + /** Default constructor. */ + public IncludePublicAnnotationsStandardDoclet() { + super(); + } + @Override public void init(final Locale locale, final Reporter reporter) { processor.treatUnannotatedClassesAsPrivate(); diff --git a/pom.xml b/pom.xml index 4da84c6ad..2059d8fa0 100644 --- a/pom.xml +++ b/pom.xml @@ -145,6 +145,7 @@ ${maven-javadoc-plugin.version} true + ${jigsaw.avoidance} -J${jigsaw.avoidance} @@ -308,7 +309,6 @@ ${jigsaw.avoidance} - -J${jigsaw.avoidance} org.apache.yetus.audience.tools.ExcludePrivateAnnotationsStandardDoclet diff --git a/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateDirsMojo.java b/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateDirsMojo.java index bec4af8d5..0dc5caed2 100644 --- a/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateDirsMojo.java +++ b/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateDirsMojo.java @@ -34,6 +34,11 @@ @InterfaceStability.Unstable public final class CreateDirsMojo extends AbstractMojo { + /** Default constructor. */ + public CreateDirsMojo() { + super(); + } + /** * Location of the dirName. */ diff --git a/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateSymLinkMojo.java b/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateSymLinkMojo.java index d0e614674..2026ae4a9 100644 --- a/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateSymLinkMojo.java +++ b/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/CreateSymLinkMojo.java @@ -39,6 +39,11 @@ @InterfaceStability.Unstable public final class CreateSymLinkMojo extends AbstractMojo { + /** Default constructor. */ + public CreateSymLinkMojo() { + super(); + } + /** * Location of the target. */ diff --git a/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/MakeBins4Libs.java b/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/MakeBins4Libs.java index d76989792..a91b21c48 100644 --- a/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/MakeBins4Libs.java +++ b/yetus-maven-plugin/src/main/java/org/apache/yetus/maven/plugin/fileops/MakeBins4Libs.java @@ -45,6 +45,11 @@ @InterfaceStability.Unstable public final class MakeBins4Libs extends AbstractMojo { + /** Default constructor. */ + public MakeBins4Libs() { + super(); + } + /** * bin dir. */ From feafd1b871e4f873c7d8c24a44d4f2c209fa94f0 Mon Sep 17 00:00:00 2001 From: Allen Wittenauer Date: Wed, 29 Apr 2026 12:20:23 -0700 Subject: [PATCH 2/4] more fixes --- .../java/org/apache/yetus/audience/InterfaceAudience.java | 5 ++++- pom.xml | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java index 386ee1dc2..319df7237 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java @@ -61,7 +61,10 @@ public class InterfaceAudience { @Documented @Retention(RetentionPolicy.RUNTIME) public @interface LimitedPrivate { - /** The list of projects with access. */ + /** + * The list of projects with access. + * @return project names + */ String[] value(); } diff --git a/pom.xml b/pom.xml index 2059d8fa0..47f653629 100644 --- a/pom.xml +++ b/pom.xml @@ -151,6 +151,13 @@ + + maven-antrun-plugin + + false + + + maven-clean-plugin From 013901e591ab60f8bcfad7cbc6fab056f225304b Mon Sep 17 00:00:00 2001 From: Allen Wittenauer Date: Wed, 29 Apr 2026 12:26:03 -0700 Subject: [PATCH 3/4] fix checkstyle while we are here --- .../yetus/audience/InterfaceAudience.java | 2 +- .../yetus/audience/InterfaceStability.java | 18 +++++----- ...cludePrivateAnnotationsStandardDoclet.java | 36 +++++++++++++++++-- ...ncludePublicAnnotationsStandardDoclet.java | 15 +++++++- 4 files changed, 57 insertions(+), 14 deletions(-) diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java index 319df7237..934c0896a 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceAudience.java @@ -46,7 +46,7 @@ @InterfaceAudience.Public @InterfaceStability.Evolving -public class InterfaceAudience { +public final class InterfaceAudience { /** * Intended for use by any project or application. */ diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java index cd8358826..418c245c1 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/InterfaceStability.java @@ -21,20 +21,20 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import org.apache.yetus.audience.InterfaceAudience.LimitedPrivate; -import org.apache.yetus.audience.InterfaceAudience.Private; -import org.apache.yetus.audience.InterfaceAudience.Public; - /** * Annotation to inform users of how much to rely on a particular package, * class or method not changing over time. Currently the stability can be * {@link Stable}, {@link Evolving} or {@link Unstable}.
* - *
  • All classes that are annotated with {@link Public} or - * {@link LimitedPrivate} must have InterfaceStability annotation.
  • - *
  • Classes that are {@link Private} are to be considered unstable unless - * a different InterfaceStability annotation states otherwise.
  • - *
  • Incompatible changes must not be made to classes marked as stable.
  • + *
    • All classes that are annotated with + * {@link InterfaceAudience.Public} or + * {@link InterfaceAudience.LimitedPrivate} must have InterfaceStability + * annotation.
    • + *
    • Classes that are {@link InterfaceAudience.Private} are to be + * considered unstable unless a different InterfaceStability annotation + * states otherwise.
    • + *
    • Incompatible changes must not be made to classes marked as + * stable.
    • *
    */ @InterfaceAudience.Public diff --git a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java index d82ca85e8..9885486b7 100644 --- a/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java +++ b/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/ExcludePrivateAnnotationsStandardDoclet.java @@ -25,7 +25,6 @@ import java.util.EnumSet; import java.util.HashSet; import java.util.Set; -import java.util.TreeSet; /** * A {@link jdk.javadoc.doclet.Doclet} @@ -33,6 +32,8 @@ * {@link org.apache.yetus.audience.InterfaceAudience.Private} or * {@link org.apache.yetus.audience.InterfaceAudience.LimitedPrivate}. * It delegates to the Standard Doclet, and takes the same options. + * Subclasses may override {@link #getName()}, {@link #getSupportedOptions()}, + * and {@link #run(DocletEnvironment)} to customize behavior. */ @InterfaceAudience.Public @InterfaceStability.Evolving @@ -43,22 +44,51 @@ public ExcludePrivateAnnotationsStandardDoclet() { } /** The doclet environment processor. */ - protected DocletEnvironmentProcessor processor = new DocletEnvironmentProcessor(); + private DocletEnvironmentProcessor processor = + new DocletEnvironmentProcessor(); + /** + * Returns the processor used to filter the doclet environment. + * @return the doclet environment processor + */ + protected DocletEnvironmentProcessor getProcessor() { + return processor; + } + + /** + * {@inheritDoc} + * Returns the name of this doclet. + * Subclasses should override to return a distinct name. + * @return doclet name + */ @Override public String getName() { return "ExcludePrivateAnnotationsStandard"; } + /** + * {@inheritDoc} + * Returns the supported options, including stability filter options. + * Subclasses may override to add or remove options. + * @return set of supported options + */ @Override public Set