@@ -63,8 +63,25 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
6363
6464 private void generateMarkdownFile () {
6565 try {
66- // Sort samples by class name for consistent ordering
67- samples .sort (Comparator .comparing (s -> s .className ));
66+ // Categorize samples by package
67+ List <SampleInfo > baseApiSamples = new ArrayList <>();
68+ List <SampleInfo > dependentSamples = new ArrayList <>();
69+ List <SampleInfo > workflowSamples = new ArrayList <>();
70+
71+ for (SampleInfo sample : samples ) {
72+ if (sample .className .contains (".baseapi." )) {
73+ baseApiSamples .add (sample );
74+ } else if (sample .className .contains (".dependent." )) {
75+ dependentSamples .add (sample );
76+ } else if (sample .className .contains (".workflow." )) {
77+ workflowSamples .add (sample );
78+ }
79+ }
80+
81+ // Sort each category by class name
82+ baseApiSamples .sort (Comparator .comparing (s -> s .className ));
83+ dependentSamples .sort (Comparator .comparing (s -> s .className ));
84+ workflowSamples .sort (Comparator .comparing (s -> s .className ));
6885
6986 // Create the samples.md file in the source output location
7087 FileObject file =
@@ -73,28 +90,67 @@ private void generateMarkdownFile() {
7390 try (BufferedWriter writer = new BufferedWriter (file .openWriter ())) {
7491 writer .write ("---\n " );
7592 writer .write ("title: Integration Test Index\n " );
76- writer .write ("weight: 105 \n " );
93+ writer .write ("weight: 85 \n " );
7794 writer .write ("---\n \n " );
7895 writer .write (
7996 "This document provides an index of all integration tests annotated with @Sample.\n \n "
80- + "These server also as sample for various use cases. "
81- + "Your are encouraged to improve both the tests and/or descriptions.\n \n " );
97+ + "These serve also as samples for various use cases. "
98+ + "You are encouraged to improve both the tests and/or descriptions.\n \n " );
8299
83100 // Generate table of contents
84101 writer .write ("## Contents\n \n " );
85- for (SampleInfo sample : samples ) {
86- String anchor = sample .simpleName .toLowerCase ();
87- writer .write ("- [" + sample .tldr + "](#" + anchor + ")\n " );
102+
103+ if (!baseApiSamples .isEmpty ()) {
104+ writer .write ("### Base API\n \n " );
105+ for (SampleInfo sample : baseApiSamples ) {
106+ String anchor = sample .simpleName .toLowerCase ();
107+ writer .write ("- [" + sample .tldr + "](#" + anchor + ")\n " );
108+ }
109+ writer .write ("\n " );
88110 }
89- writer .write ("\n ---\n \n " );
90-
91- // Generate individual test sections
92- for (SampleInfo sample : samples ) {
93- writer .write ("## " + sample .simpleName + "\n \n " );
94- writer .write ("**" + sample .tldr + "**\n \n " );
95- writer .write (sample .description + "\n \n " );
96- writer .write ("**Package:** " + getGitHubPackageLink (sample .className ) + "\n \n " );
97- writer .write ("---\n \n " );
111+
112+ if (!dependentSamples .isEmpty ()) {
113+ writer .write ("### Dependent Resources\n \n " );
114+ for (SampleInfo sample : dependentSamples ) {
115+ String anchor = sample .simpleName .toLowerCase ();
116+ writer .write ("- [" + sample .tldr + "](#" + anchor + ")\n " );
117+ }
118+ writer .write ("\n " );
119+ }
120+
121+ if (!workflowSamples .isEmpty ()) {
122+ writer .write ("### Workflows\n \n " );
123+ for (SampleInfo sample : workflowSamples ) {
124+ String anchor = sample .simpleName .toLowerCase ();
125+ writer .write ("- [" + sample .tldr + "](#" + anchor + ")\n " );
126+ }
127+ writer .write ("\n " );
128+ }
129+
130+ writer .write ("---\n \n " );
131+
132+ // Generate Base API section
133+ if (!baseApiSamples .isEmpty ()) {
134+ writer .write ("# Base API\n \n " );
135+ for (SampleInfo sample : baseApiSamples ) {
136+ writeSampleSection (writer , sample );
137+ }
138+ }
139+
140+ // Generate Dependent Resources section
141+ if (!dependentSamples .isEmpty ()) {
142+ writer .write ("# Dependent Resources\n \n " );
143+ for (SampleInfo sample : dependentSamples ) {
144+ writeSampleSection (writer , sample );
145+ }
146+ }
147+
148+ // Generate Workflows section
149+ if (!workflowSamples .isEmpty ()) {
150+ writer .write ("# Workflows\n \n " );
151+ for (SampleInfo sample : workflowSamples ) {
152+ writeSampleSection (writer , sample );
153+ }
98154 }
99155 }
100156
@@ -109,6 +165,14 @@ private void generateMarkdownFile() {
109165 }
110166 }
111167
168+ private void writeSampleSection (BufferedWriter writer , SampleInfo sample ) throws IOException {
169+ writer .write ("## " + sample .simpleName + "\n \n " );
170+ writer .write ("**" + sample .tldr + "**\n \n " );
171+ writer .write (sample .description + "\n \n " );
172+ writer .write ("**Package:** " + getGitHubPackageLink (sample .className ) + "\n \n " );
173+ writer .write ("---\n \n " );
174+ }
175+
112176 private String getGitHubPackageLink (String className ) {
113177 // Extract package name by removing the simple class name
114178 int lastDot = className .lastIndexOf ('.' );
0 commit comments