This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 5a7478c43e Update docs
5a7478c43e is described below

commit 5a7478c43e28642813d77b881dcea563a9df6488
Author: James Bognar <[email protected]>
AuthorDate: Sun Dec 28 18:27:40 2025 -0500

    Update docs
---
 docs/pages/developer-info/01.00.DeveloperLinks.md  |  20 ++
 .../developer-info/02.01.BecomingAContributor.md   |  17 ++
 .../02.02.NonCommittersContribute.md               |  31 ++
 .../developer-info/02.03.NewMemberGuidelines.md    | 308 ++++++++++++++++++++
 .../developer-info/02.04.NewReleaseGuidelines.md   | 312 +++++++++++++++++++++
 .../developer-info/02.05.VersioningGuidelines.md   | 205 ++++++++++++++
 .../02.06.CodeFormattingStylesheet.md              | 258 +++++++++++++++++
 .../developer-info/02.08.DevelopmentWishList.md    |  84 ++++++
 docs/pages/developer-info/03.00.CurrentMembers.md  |  27 ++
 docs/pages/developer-info/04.00.BlogIndex.md       |  32 +++
 .../pages/developer-info/04.01.JUnitTestResults.md |  10 +
 .../04.02.RESTMediaTypeLessPOJORequests.md         |  16 ++
 .../04.03.Juneau720DocumentationPreview.md         |  18 ++
 ...SupportForAutoValidationInSwaggerAnnotations.md |  29 ++
 .../developer-info/04.05.DocumentationReorg.md     |  16 ++
 .../04.06.BehaviorChangeOnDefaultRestMethodPath.md |  18 ++
 .../04.07.DualPurposeRESTJavaInterfaces.md         |  27 ++
 .../04.08.PetStoreApplicationNowUsesJPA.md         |  16 ++
 .../04.09.NewArticleDualPurposeInterfaces.md       |  12 +
 .../04.10.DefaultSystemConfiguration.md            |  43 +++
 .../developer-info/04.11.SpringBootIntegration.md  |  22 ++
 .../pages/developer-info/04.12.SourceJavadocTag.md |  16 ++
 .../04.13.ImportStatementsInConfigurationFiles.md  |  16 ++
 ....SerializerAndParserConfigurationAnnotations.md |  23 ++
 .../04.15.NewAndImprovedRestClient.md              |  59 ++++
 docs/pages/developer-info/05.00.ArticlesIndex.md   |  17 ++
 docs/sidebars.ts                                   | 167 +++++++++++
 .../how-to/NonCommittersContribute.1.png           | Bin 0 -> 56741 bytes
 .../how-to/NonCommittersContribute.2.png           | Bin 0 -> 120619 bytes
 29 files changed, 1819 insertions(+)

diff --git a/docs/pages/developer-info/01.00.DeveloperLinks.md 
b/docs/pages/developer-info/01.00.DeveloperLinks.md
new file mode 100644
index 0000000000..9e026b3ffa
--- /dev/null
+++ b/docs/pages/developer-info/01.00.DeveloperLinks.md
@@ -0,0 +1,20 @@
+---
+id: 01.00.DeveloperLinks
+title: Developer Links
+---
+
+## Developer Links
+
+Useful links for Apache Juneau developers:
+
+- **[Jenkins](https://ci-builds.apache.org/job/Juneau/)** - Continuous 
integration and deployment
+- **[Confluence](https://cwiki.apache.org/confluence/display/JUNEAU)** - 
Collaborative documentation and project management
+- **[Confluence 
Blog](https://cwiki.apache.org/confluence/display/JUNEAU/Blog)** - Project 
updates and announcements
+- **[Twitter](https://twitter.com/apachejuneau)** - Follow Apache Juneau on 
Twitter
+- **[Slack](https://apachejuneau.slack.com)** - Real-time discussions and 
collaboration
+- **[Apache Mailing Lists](https://juneau.apache.org/mail-lists.html)** - 
Project communication
+  - **[email protected]** - Development discussions
+  - **[email protected]** - Commit notifications
+  - **[email protected]** - User discussions
+- **[Pony Mail](https://lists.apache.org/[email protected])** - 
Email archive system
+
diff --git a/docs/pages/developer-info/02.01.BecomingAContributor.md 
b/docs/pages/developer-info/02.01.BecomingAContributor.md
new file mode 100644
index 0000000000..e32bd9d883
--- /dev/null
+++ b/docs/pages/developer-info/02.01.BecomingAContributor.md
@@ -0,0 +1,17 @@
+---
+id: 02.01.BecomingAContributor
+title: Becoming a contributor
+---
+
+We are actively looking for contributors to join and take an active role in 
the project!
+
+To become a contributor, we recommend joining and contributing code changes 
through the mailing list. Once you're contributing and your work is good, one 
of our team may invite you to be a committer. After that, the team will call 
for a vote. When that happens, if you accept, the following process kicks into 
place:
+
+* Download and print the Apache Contributor License Agreement from the [New 
committers guide](https://www.apache.org/dev/new-committers-guide.html).
+* Sign and fax (or email) the CLA to Apache.
+* Wait for your name to appear on the [list of received 
CLAs](https://whimsy.apache.org/officers/cla). Once that's done, let us know 
and we can apply to Apache Infrastructure to have your account created. We'll 
need the following information: Full name, preferred email address, preferred 
unix account name.
+* Read the [New committers 
guide](https://www.apache.org/dev/new-committers-guide.html).
+* More information for new committers can be found in the [Committers 
information doc](https://www.apache.org/dev/committers.html).
+
+The Juneau project does not currently have distinct roles for Committers and 
PMC (Project Management Committee). All Committers are also voting members.
+
diff --git a/docs/pages/developer-info/02.02.NonCommittersContribute.md 
b/docs/pages/developer-info/02.02.NonCommittersContribute.md
new file mode 100644
index 0000000000..6a391c6333
--- /dev/null
+++ b/docs/pages/developer-info/02.02.NonCommittersContribute.md
@@ -0,0 +1,31 @@
+---
+id: 02.02.NonCommittersContribute
+title: How non-committers can contribute code
+---
+
+This guide is for those who are new to Juneau and want to contribute code, 
specifically those who do not have write access to our repositories:
+- [https://github.com/apache/juneau](https://github.com/apache/juneau)
+- 
[https://github.com/apache/juneau-website](https://github.com/apache/juneau-website)
+
+## Step-by-step guide
+
+1. **Create a fork** of the repository you want to contribute to - 
[https://github.com/apache/juneau](https://github.com/apache/juneau) or 
[https://github.com/apache/juneau-website](https://github.com/apache/juneau-website)
 - the fork button is in the top right corner
+
+   ![Fork button 
location](/developer-info/how-to/NonCommittersContribute.1.png)
+
+2. **Clone your fork** of the repository locally
+3. **Make changes** to your local clone. If you haven't already, create a JIRA 
issue.
+4. **Commit them locally**, using the commit format of `"JIRA-TICKET - What 
you changed"` e.g. `"JUNEAU-123 - Made JUNEAU better."`
+5. **Push these changes** to your fork
+6. **Navigate back** to your fork or to our github repositories and you'll see 
an option to create a new pull request.
+7. **Click on the blue link "Pull request"** to bring up the create pull 
request screen.
+8. **After you've filled out a title and description**, click on the green 
"Create pull request" button.
+
+   ![Create pull request 
screen](/developer-info/how-to/NonCommittersContribute.2.png)
+
+## External links
+
+- [Fork a 
Repository](https://docs.github.com/en/get-started/quickstart/fork-a-repo)
+- [Creating a Pull request from a 
Fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)
+- [Creating a Pull 
request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
+
diff --git a/docs/pages/developer-info/02.03.NewMemberGuidelines.md 
b/docs/pages/developer-info/02.03.NewMemberGuidelines.md
new file mode 100644
index 0000000000..44800a124b
--- /dev/null
+++ b/docs/pages/developer-info/02.03.NewMemberGuidelines.md
@@ -0,0 +1,308 @@
+---
+id: 02.03.NewMemberGuidelines
+title: New member guidelines
+---
+
+This document provides information on adding new Committers/PMC members to 
Apache Juneau.
+
+The Apache Juneau team does not differentiate between Committers and PMC 
members. Any member of the PMC can propose a new member of the PMC.
+
+## Summary
+
+The general process is as follows:
+
+1. Discussion
+2. Call a vote
+3. Close the vote
+4. Invite the new committer
+
+If they accept, then do:
+
+1. If committer is also to be a PMC member, nominator sends email to board@ 
asking for acknowledgement of new PMC member
+2. Wait 72 hours for lazy acceptance by the board
+3. If the candidate is already a committer on another project, accept the 
committer and skip to step 8
+4. Accept the committer and request they file an ICLA, notifying the PMC and 
choosing an available Apache id
+5. Wait until we see that receipt of iCLA (Individual Contributor License 
Agreement) is recorded
+6. Request creation of the committer account if not already done by Secretary
+7. Now wait until root says it is done
+8. PMC Chair to enable svn and other access
+9. Add committer to the appropriate groups in JIRA and CWiki
+10. Notify the committer of completion
+11. Announce the new committer
+
+## Discussion
+
+Before approving membership, it's assumed that the person has actively 
contributed through this process:  
+[Contributing for 
Non-committers](https://cwiki.apache.org/confluence/display/JUNEAU/Contributing+for+Non-committers)
+
+Once it's been shown that the member submits good work, the team can invite 
them to be a full member.
+
+```text
+To: [email protected]
+[DISCUSS] Jane Doe PMC membership
+
+I'd like to discuss adding Jane Doe as a PMC member.
+
+State reason why.
+```
+
+## Call for vote
+
+If there is consensus that the proposed member is suitable, then there should 
be a formal vote in the PMC private alias:
+
+```text
+To: [email protected]
+[VOTE] Jane Doe PMC membership
+
+I'm pleased to be calling this vote for inviting [Jane Doe] to be a member of 
the Juneau PMC.
+
+This vote will be open at least until 04-May-2016 1:30pm and passes if a 
majority of at least three +1 Apache Juneau PMC votes are cast.
+(needs to be at least 72 weekday hours)
+
+[ ] +1 Approve invitation
+[ ] 0 I don't feel strongly about it, but don't object
+[ ] -1 Do not approve invitation because...
+
+State reason why.
+```
+
+## Close the vote
+
+If the vote is successful, the proposer should send a message to the PMC 
private alias.
+
+```text
+To: [email protected]
+[VOTE][RESULT] Jane Doe PMC membership
+
+Voting for PMC membership for [Jane Doe] is now closed. The vote has passed 
with the following tally:
+
+John Smith, PMC, +1
+...
+``` 
+
+## Board notification
+
+Adding a new PMC member requires sending an email notification to the Board's 
mailing list copying the PMC's private mailing list and waiting 72 hours. Once 
the notification appears in the archives, an invitation may be sent out 72 
hours later (unless a Director objects to the nomination). The detailed process 
can be found in the June 2013 board minutes under section "7 G. Amend the 
Procedure for PMC Membership Changes"
+
+**Do NOT send an unconditional invite to the potential member before the 72 
hour NOTICE period has expired!** It would be very awkward if the invite has to 
be withdrawn if the board objects.
+
+This notification may be sent by the PMC Chair, or by any other PMC member if 
they include a link to the formal PMC decision or vote on their private@ list.
+
+Ensure the PMC private list is copied - but do not Cc the potential member. 
For example:
+
+```text
+To: [email protected]
+Cc: [email protected]
+[NOTICE] Jane Doe for Juneau PMC
+
+Juneau proposes to invite [Jane Doe] (janedoe) to join the PMC.
+
+(include if a vote was held)
+The vote result is available here: https://lists.apache.org/...
+```
+
+**It should noted that there is a grace period of 72 hours from when the above 
NOTICE is sent to the board to when the proposed member is formally invited. 
This is an important part of the overall process. Failure to do this can result 
in an embarrassing situation for people involved.**
+
+## PMC Invite
+
+After 72 hours, Jane Doe should be invited to join the PMC. Check to see if 
the proposed committer already has an Apache id.
+
+### Sample message for proposed committers without an Apache id:
+
+```text
+To: [email protected]
+Cc: [email protected]
+Subject: You're invited to join the Juneau PMC!
+
+Hello [Jane Doe],
+
+The Juneau Project Management Committee (PMC) hereby offers you committer 
privileges to the project as well as membership in the PMC. These privileges 
are offered on the understanding that you'll use them reasonably and with 
common sense. We like to work on trust rather than unnecessary constraints.
+
+Being a committer enables you to more easily make changes without needing to 
go through the patch submission process. Being a PMC member enables you to 
guide the direction of the project.
+
+Being a committer does not require you to participate any more than you 
already do. It does tend to make one even more committed. You will probably 
find that you spend more time here.
+
+Of course, you can decline and instead remain as a contributor, participating 
as you do now.
+
+A. This personal invitation is a chance for you to accept or decline in 
private. Either way, please let us know in reply to the 
[email protected] address only.
+
+B. If you accept, the next step is to register an iCLA if you do not have an 
Apache id.
+
+If you have an Apache id, let the PMC know by return email what your id is.
+
+1. If you do not have an Apache id, details of the iCLA and the forms are 
found here:
+   http://www.apache.org/licenses/#clas
+
+2. Instructions for its completion and return to the Secretary of the ASF are 
found here:
+   http://www.apache.org/licenses/#submitting
+
+3. When you transmit the completed iCLA, request to notify the Apache Juneau 
and choose a unique Apache id. Look to see if your preferred id is already 
taken at http://people.apache.org/committer-index.html. This will allow the 
Secretary to notify the PMC when your iCLA has been recorded.
+
+When recording of your iCLA is noticed, you will receive a follow-up message 
with the next steps for establishing you as a committer.
+```
+
+### Sample message for existing Apache committers:
+
+```text
+To: [email protected]
+Cc: [email protected]
+Subject: You're invited to join the Juneau PMC!
+
+Hello [Jane Doe],
+
+The Juneau Project Management Committee (PMC) hereby offers you committer 
privileges to the project as well as membership in the PMC. These privileges 
are offered on the understanding that you'll use them reasonably and with 
common sense. We like to work on trust rather than unnecessary constraints.
+
+Being a committer enables you to more easily make changes without needing to 
go through the patch submission process. Being a PMC member enables you to 
guide the direction of the project.
+
+Being a committer does not require you to participate any more than you 
already do. It does tend to make one even more committed. You will probably 
find that you spend more time here.
+
+Of course, you can decline and instead remain as a contributor, participating 
as you do now.
+
+This personal invitation is a chance for you to accept or decline in private. 
Either way, please let us know in reply to the [email protected] 
address only.
+```
+
+## PMC Accept
+
+This is the followup email after the new committer has accepted the 
invitation.  
+
+This message can be skipped for existing Apache committers.
+
+### Message for new Apache committers:
+
+```text
+To: [email protected]
+Cc: [email protected]
+Subject: Re: invitation to become Juneau PMC member
+
+Welcome. Here are the next steps. After that we will make an announcement to 
the juneau-dev list.
+
+You need to have an Apache id. If you do not already have one, you will need 
to send an individual Contributor License Agreement to the ASF. If you also 
make contributions done in work time or using work resources then consult with 
your company to see if they want to file a corporate CLA. Ask us (the PMC) if 
you have any questions.
+
+http://www.apache.org/licenses/#clas
+
+You need to choose a preferred ASF user name and alternatives. In order to 
ensure it is available you can view a list of taken ids at
+
+http://people.apache.org/committer-index.html
+
+Please notify us when you have submitted the iCLA and by what means you did 
so. This will enable us to monitor its progress.
+
+We will arrange for your Apache user account when the iCLA has been recorded.
+
+After that is done, please make followup replies to the [email protected] 
list. We generally discuss everything there and keep the 
[email protected] list for occasional matters which must be private.
+
+Most important links for developers can be found here:
+
+http://juneau.apache.org/index.html#community.html
+
+The developer section of the Apache website describes the roles and provides 
other resources:
+
+http://www.apache.org/foundation/how-it-works.html
+http://www.apache.org/dev/
+
+Just as before you became a committer, participation in any ASF community 
requires adherence to the ASF Code of Conduct:
+
+https://www.apache.org/foundation/policies/conduct.html
+
+Best regards,
+The Apache Juneau PMC
+```
+
+## PMC Account Creation
+
+### For new Apache committers:
+
+* Request new account for new committer:  
+  https://whimsy.apache.org/officers/acreq
+* Follow the instructions here.
+
+### For new and existing Apache committers:
+
+* Make sure user is listed on this page to ensure iCLA has been received.  
+  https://svn.apache.org/repos/private/foundation/officers/iclas.txt
+* Add user to Juneau project using Whimsy  
+  https://whimsy.apache.org/roster/committee/juneau
+* Add user permissions to edit the Confluence pages:  
+  
https://cwiki.apache.org/confluence/spaces/editspacepermissions.action?key=JUNEAU
+* Add user to list of developers in juneau-root/pom.xml.
+* Add user to list of members in juneau-website/templates/community.html.
+
+## PMC Done 
+
+After the committer account is established, send the following message:
+
+### Message for new Apache committers:
+
+```text
+To: [email protected], [email protected]
+Subject: Account request: Jane Doe
+
+As you know, the ASF Infrastructure has set up your committer account as the 
username '[janedoe]'.
+
+Please follow the instructions to set up your SSH, svn password, svn 
configuration, mail forwarding, etc.
+http://www.apache.org/dev/#committers
+
+Please subscribe to the Juneau Project Management Committee mailing list
[email protected].
+
+You have commit access to specific sections of the ASF repository, as follows:
+https://gitbox.apache.org/repos/asf/juneau.git
+https://gitbox.apache.org/repos/asf/juneau-website.git
+
+If you haven't done so already, you'll need to use the GitBox Account Linking 
Utility to get write access to these repositories.
+https://gitbox.apache.org/setup/
+
+The general "committers" at:
+https://svn.apache.org/repos/private/committers
+
+If you have any questions during this phase, then please see the following 
resources:
+Apache developer's pages: http://www.apache.org/dev/
+
+Naturally, if you don't understand anything be sure to ask us on the Juneau 
dev mailing list.
+
+Documentation is maintained by volunteers and hence can be out-of-date and 
incomplete - of course you can now help fix that.
+
+A PMC member will announce your election to the dev list soon.
+```
+
+### Message for existing Apache committers:
+
+```text
+To: [email protected], [email protected]
+Subject: Account request: Jane Doe
+
+Welcome to Apache Juneau!
+
+Please subscribe to the Juneau Project Management Committee mailing list 
[email protected].
+
+You have commit access to specific sections of the ASF repository, as follows:
+https://gitbox.apache.org/repos/asf/juneau.git
+https://gitbox.apache.org/repos/asf/juneau-website.git
+
+The general "committers" at:
+https://svn.apache.org/repos/private/committers
+
+If you have any questions during this phase, then please see the following 
resources:
+Apache developer's pages: http://www.apache.org/dev/
+
+Naturally, if you don't understand anything be sure to ask us on the Juneau 
dev mailing list.
+
+Documentation is maintained by volunteers and hence can be out-of-date and 
incomplete - of course you can now help fix that.
+
+A PMC member will announce your election to the dev list soon.
+```
+
+## PMC Announce
+
+This is the email to announce to juneau-dev once the account has been created.
+
+```text
+To: [email protected]
+Subject: New PMC member: Jane Doe
+
+The Project Management Committee (PMC) for Apache Juneau has invited [Jane 
Doe] to become a PMC member and we are pleased to announce that he has accepted.
+
+(add specific details here)
+
+Being a committer enables easier contribution to the project since there is no 
need to go via the patch submission process. This should enable better 
productivity. Being a PMC member enables assistance with the management and to 
guide the direction of the project.
+```
+
diff --git a/docs/pages/developer-info/02.04.NewReleaseGuidelines.md 
b/docs/pages/developer-info/02.04.NewReleaseGuidelines.md
new file mode 100644
index 0000000000..23c9d7ad5b
--- /dev/null
+++ b/docs/pages/developer-info/02.04.NewReleaseGuidelines.md
@@ -0,0 +1,312 @@
+---
+id: 02.04.NewReleaseGuidelines
+title: New release guidelines
+---
+
+This document provides a mixture of information, advice and examples of best 
practices for releasing versions of Apache Juneau.
+
+The instructions provided here are consistent with, but not a replacement for 
the **ASF Release Guidelines**.
+
+## 1 - Intro
+
+The Apache Juneau project uses the Nexus installation at the Apache Software 
Foundation to stage Maven artifacts before the release and later publish them; 
the POM in the root project contains all the necessary configuration. This 
guide covers deploying to Nexus using Maven. For alternatives see the **ASF 
wide documentation**. If this is the first time you are publishing to the ASF's 
Nexus instance you'll need to **prepare your development environment**.
+
+Juneau components are expected to use Maven to build the jar/zip files. The 
version of Maven used is assumed to be Maven 3 throughout. At a minimum, Juneau 
releases **must** include full source distributions packaged in zip archives.
+
+This document assumes that the release is being prepared on a linux/unix 
system, and that steps are being executed from the command-line. The principles 
are the same, however, for a release prepared on other operating systems.
+
+These instructions assume you are taking on the role of release manager. This 
implies you are at least one of the developers.
+
+<div class="info">
+
+**Note:** If you're using macOS, you'll want to install **wget**.
+
+**Note:** Yellow blocks are code blocks that can be executed as-is UNLESS you 
see red text indicating values that need to be replaced.
+
+</div>
+
+## 2 - Preparation
+
+### 2.1 - Determine version number
+
+Consult the **versioning guidelines** and check that the current level of 
compatibility is suitable for the proposed version number.
+
+### 2.2 - Propose email to dev@juneau
+
+Send an email to the **dev@juneau** mailing list informing the community you 
plan on creating a new release. The message can be simple:
+
+```text
+To: [email protected]
+Subject: [PROPOSE] Release Apache Juneau 9.x.x RCx
+
+Hi everyone,
+
+I'm going to create a new release of Juneau because <state short reason why>.
+
+If I do not hear any objections within the next 24 hours, I'm going to go 
ahead and start the process.
+
+The release will be called 9.x.x-RCx. The next release will be set to 7.x.y.
+```
+
+## 3 - Creating a release candidate
+
+### 3.1 - Create new release in JIRA
+
+Log into **JIRA** and create the new version (e.g. **7.0.1**). Change the 
**Release date** on the current version to today. 
+
+Generate the release notes for the current release as plain text. Click on the 
current release and click the **Release Notes** button. Click the **Configure 
Release Notes** button to select plain text. Copy the contents of this file to 
the root **RELEASE-NOTES.txt** file and commit the change. 
+
+### 3.2 - Update Release Notes section in overview.html
+
+We maintain externally-consumable new-and-noteworthy information for all our 
releases in our javadocs.
+
+Using the release notes above as a guide, create release notes in the 
**Release Notes** section of the **/docs/src/javadoc/overview.html** document. 
Use the previous release as a guideline. 
+
+### 3.3 - Update LICENSE and NOTICE files
+
+Check the contents of the **LICENSE** and **NOTICE** files in the root 
directory. 
+
+Ensure that the LICENSE files contain the latest information specified in the 
**Apache Licenses** page. 
+
+Check that the years in the copyright statement in the NOTICE file are 
correct. The notice file should contain the following:
+
+```
+Apache Juneau
+Copyright 2016-{this-year} The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+```
+
+Developer documentation on how to apply the Apache License can be found in 
**Applying the Apache License, Version 2.0** and **ASF Source Header and 
Copyright Notice Policy.**
+
+### 3.4 - Run release script
+
+If you've already successfully performed a release, you can run the automated 
Python script to perform the release. If you do not wish to use the script, 
skip to section **3.5 - Prepare your build machine**.
+
+The release script is located at:
+
+* **scripts/release.py**
+
+Run the script from the juneau root directory. It will walk you through the 
entire process.
+
+If successful, you can skip to section **4 - Voting.**
+
+### 3.5 - Prepare your build machine
+
+Run the following commands to set environment variables that will be used 
throughout this page.   
+Set **X_RELEASE** to the version you plan on release and **X_STAGING** to the 
staging directory to use on your machine:
+
+```bash
+export X_VERSION=7.0.0
+export X_NEXT_VERSION=7.0.1-SNAPSHOT
+export X_RELEASE=juneau-7.0.0-RC1
+export X_STAGING=~/tmp/dist-release-juneau
+export X_USERNAME=<your apache username>
+export [email protected]
+```
+
+Run the following commands:
+
+```bash
+cd ~/.m2
+mv repository repository-old
+rm -rf repository-old &
+rm -rf $X_STAGING
+mkdir -p $X_STAGING
+mkdir $X_STAGING/git
+cd $X_STAGING/git
+git clone https://gitbox.apache.org/repos/asf/juneau.git
+git clone https://gitbox.apache.org/repos/asf/juneau-website.git
+cd juneau
+git config user.name $X_USERNAME
+git config user.email $X_EMAIL
+```
+
+Make sure you're running at least Java 17 and Maven 3:
+
+```bash
+java -version
+mvn -version
+```
+
+<div class="info">
+
+**Note:** If you're not running Java 17+, you'll get errors when trying to 
generate the Javadocs.
+
+</div>
+
+### 3.6 - Update KEYS file if necessary
+
+Check that the **KEYS** file contains your correct key and fingerprint. If 
not, then follow the instructions in this section.
+
+You need to have **gpg** and preferably a **GPG Agent** installed on the 
machine you will build the release on. This needs to be configured with your 
**GPG release key**.
+
+Find your PGP fingerprint:
+
+```bash
+gpg --fingerprint $X_EMAIL
+```
+
+You should see something like the following:
+
+```
+jamesbognar-ltm:dist-release-juneau james.bognar$ gpg --fingerprint 
[email protected]
+pub rsa2048 2016-09-21 [SC]
+      59E1 A375 4EF6 0E6F CE42 ABFE 3629 2BD2 BA7D 3A86
+uid           [ultimate] James Bognar <[email protected]>
+sub rsa2048 2016-09-21 [E]
+```
+
+Your key should list your **@apache.org email address**. Also check your key 
has **not expired** - you can use **gpg --edit-key** and **gpg --send-key** to 
update.
+
+The public key must first be **uploaded to a public keyserver**. To do this, 
take the _last_ 8 digits from the hex **fingerprint** and upload them with the 
following command:
+
+```bash
+gpg --keyserver pgp.mit.edu --send-key BA7D3A86
+```
+
+Edit your details on **id.apache.org** to provide your **OpenPGP Public Key 
Primary Fingerprint**, e.g.:
+
+```
+59E1 A375 4EF6 0E6F CE42 ABFE 3629 2BD2 BA7D 3A86
+```
+
+## 4 - Voting
+
+Once the release candidate has been created and uploaded, a vote must be held 
on the **dev@juneau** mailing list. The vote must be open for at least 72 hours 
and requires a minimum of 3 binding +1 votes from PMC members.
+
+The release script will generate a vote email for you. Send this email to 
**[email protected]**.
+
+## 5 - Verifying the release
+
+Before voting, it's important to verify the release artifacts. The release 
script includes automated verification steps, but you should also manually 
verify:
+
+1. Download the source distribution
+2. Verify the PGP signatures
+3. Verify the SHA-512 checksums
+4. Build the project from source
+5. Run the test suite
+
+## 6 - After a successful vote
+
+If the vote passes and it's been agreed on **dev@juneau**, then:
+
+* Tag the release in Git
+* Promote the release candidate to a release
+* Update download page
+* Send announcement email
+
+### 6.1 - Tag the release in Git
+
+Copy the final tag:
+
+```bash
+git tag juneau-7.0.0 juneau-7.0.0-RC1
+git push --tags
+```
+
+### 6.2 - Moving to release area
+
+Use full URL **svn mv** to move the accepted release candidate to the release 
folder structure on **dist.apache.org**, e.g. 
**https://dist.apache.org/repos/dist/release/juneau/source/** but remember to 
remove the -RC1 part from the folder name.
+
+```bash
+svn mv https://dist.apache.org/repos/dist/dev/juneau/source/juneau-7.0.0-RC1 \
+      https://dist.apache.org/repos/dist/release/juneau/source/juneau-7.0.0 \
+      -m "Releasing apache juneau-7.0.0"
+svn mv https://dist.apache.org/repos/dist/dev/juneau/binaries/juneau-7.0.0-RC1 
\
+      https://dist.apache.org/repos/dist/release/juneau/binaries/juneau-7.0.0 \
+      -m "Releasing apache juneau-7.0.0"
+```
+
+### 6.3 - Releasing Maven repository
+
+Tick the correct **staging repository** (perhaps do a quick check of an SHA1 
sum against the vote email), then click **Release**. It should then propagate 
to **Apache's release Maven repository** and eventually mirrored to **Maven 
Central**.
+
+### 6.4 - Update download page
+
+Wait 24 hours for the download mirrors to pick up the new release from 
**dist.apache.org**, otherwise eager users (or users who just happened to want 
to download that day) may get **404 Not Found** errors.
+
+Update (or make) the corresponding pages under **downloads.html** including 
the correct version number for the Maven dependencies and the release dates.
+
+Download links should be using the mirror redirector 
**https://www.apache.org/dyn/closer.cgi**, e.g. 
**https://www.apache.org/dyn/closer.cgi/juneau/source/juneau-7.0.0/juneau-7.0.0-source-release.zip**
+
+The **asc/md5/sha1** links should go directly to 
**https://www.apache.org/dist/** - e.g. 
**https://www.apache.org/dist/juneau/source/juneau-7.0.0/juneau-7.0.0-source-release.zip.asc**
 (important bit: **https**)
+
+Remove the staged release from **Nexus**.
+
+### 6.5 - Removing old versions
+
+**After** the download page has been published, the download mirrors have 
synchronized and the new version is live you must remove the old versions from 
**https://dist.apache.org/repos/dist/release/juneau/source/**
+
+```bash
+svn rm https://dist.apache.org/repos/dist/release/juneau/source/juneau-6.9.9/
+svn rm https://dist.apache.org/repos/dist/release/juneau/binaries/juneau-6.9.9/
+```
+
+Older versions are archived under 
**http://archive.apache.org/dist/juneau/source/** but won't appear on the 
download mirrors.
+
+### 6.6 - Create announcements
+
+Announce the availability of the new release.
+
+Please **remember to give a brief description of your component**. 
+
+```text
+To: [email protected], [email protected]
+Subject: [ANNOUNCEMENT] Apache Juneau 9.x.x Released
+
+Hello all,
+
+The Apache Juneau team is proud to announce the release of Juneau 9.x.x.
+
+Apache Juneau is...
+- A toolkit for marshalling POJOs to a variety of content types using a common 
framework.
+- A REST server API for creating Swagger-based self-documenting REST 
interfaces using POJOs.
+- A REST client API for interacting with REST interfaces using POJOs.
+- A remote proxy API built on top of REST.
+- A sophisticated INI config file API.
+- A REST microservice API that combines all the features above for creating 
lightweight standalone REST interfaces that start up in milliseconds.
+
+<A description of latest updates>
+
+The release is available here (don't forget to verify the signatures):
+xxx
+
+Release notes can be found here:
+xxx
+
+We welcome your help and feedback. For more information on the project and how 
to get involved, visit the project website at
+http://juneau.apache.org/
+```
+
+Send this mail from your @apache.org account. Please spell check the document!
+
+Wait to send the release announcement until you have verified that:
+
+1. The release artifacts are available on the mirrors.
+2. The component website including the updated download page has been updated 
on the public site **http://juneau.apache.org/proper/juneau**.
+3. If the component publishes maven artifacts, these artifacts have been 
replicated to the central maven repo at **repo.maven.apache.org**.  
+   (Clear your local repo of the release artifacts and either activate the 
clirr report with the updated version info or update a local project with a 
dependency to the new release version to get maven to try to download the 
release artifacts. Or just access repo using a web browser.)
+
+## 7 - Updating Website
+
+The website contents are located in GitHub: 
https://github.com/apache/juneau-website
+
+Checkout the contents of this repo to the same git folder of the juneau 
project (e.g. /juneau and /juneau-website should be in the same parent git 
folder).
+
+Generate the Javadocs for the new version by doing the following:
+
+1. Make sure the version is set correctly in the root **pom.xml** (should 
already be done at this point).
+2. Run the following command in the **/juneau** folder to generate the 
Javadocs and add them to the website: **scripts/build-docs.py**
+3. Verify that a new folder is created at **docs/static/javadocs/x.x.x** 
containing the newly-generated javadocs.
+
+Update the downloads page and regenerate templates.
+
+1. Update the **juneau-website/templates/downloads.html** to reflect the 
newest release.  
+   1. Change **Current release** section.  
+   2. Add new entry to **Older releases** section.
+2. Update the settings in **juneau-website.properties** to reflect new 
versions.
+3. Run the **juneau-website.sh** script to regenerate the templated files.
+
+After completion, commit and push the changes to the master branch. The 
website should be updated immediately.
diff --git a/docs/pages/developer-info/02.05.VersioningGuidelines.md 
b/docs/pages/developer-info/02.05.VersioningGuidelines.md
new file mode 100644
index 0000000000..34b671dce4
--- /dev/null
+++ b/docs/pages/developer-info/02.05.VersioningGuidelines.md
@@ -0,0 +1,205 @@
+---
+id: 02.05.VersioningGuidelines
+title: Versioning guidelines
+---
+
+This document provides:
+
+* A set of guidelines intended to help the Apache Juneau team balance the need 
to provide a stable interface to clients with the growth and evolution of 
components over time.
+* A language for describing the changes to a component and the types of 
incompatibilities such changes may create.
+* A protocol for communicating those changes and incompatibilities to users 
and developers.
+
+## 1 - Quick guidelines
+
+In a nutshell, Juneau release numbers are usually of the form 
**major.minor.point**.
+
+* **Major releases** introduce breaking changes.
+* **Minor releases** introduce new significant features.
+* **Point releases** introduce new minor features and bug fixes.
+
+## 2 - Interface types
+
+We identify two distinct categories of APIs within a component: _external_, 
_internal_.
+
+### 2.1 - The external interface
+
+Composed of the public-facing classes, methods and fields that are likely to 
be consumed by external developers. In general, these consist of all public 
classes/methods/fields, and protected methods/fields on classes meant to be 
extended.
+
+We try to avoid or at least acknowledge changes to the external interface.
+
+### 2.2 - The internal interface
+
+Composed of classes, methods, and fields not meant for external consumption.
+
+We mark interfaces as internal in the following ways:
+
+* Making them private or package-protected.
+* By placing them in packages containing the name "**internal**". (e.g. 
"**org.apache.juneau.internal**").
+* By placing them in packages containing the name "**proto**". These identify 
new code not yet ready for consumption.
+* By specifying in the Javadoc that it's an internal interface not meant for 
consumption.
+
+Developers have free reign to make changes to the internal interface. These 
interfaces should not be included in the Javadocs.
+
+## 3 - Types of change
+
+We can categorize the changes to a component according to the degree to which 
these changes are compatible with previous releases of the component. We define 
three such categories: _fully-compatible_, _interface-compatible_, and 
_external-interface-compatible_.
+
+### 3.1 - Fully-compatible changes
+
+Release _B_ is said to be _fully-compatible_ with Release _A_ if _B_ can 
simply replace _A_ in (nearly) all circumstances and deployments without 
changing the client code or configuration, and without changing the semantics 
of any public or protected member.
+
+**Examples of fully-compatible changes include:**
+
+* adding a non-abstract method to a class
+* adding a class or interface to a component
+* changing a member from private to protected
+* changing a private attribute to a private method
+* changing an implementation such that a given external library is no longer 
needed by the component
+* changing a method or class from final to non-final
+* deprecating, but not otherwise changing, a class, interface or member
+* changing a component in order to fix a defect (a deviation from the 
documented or reasonably expected behavior), assuming no other 
incompatibilities are introduced
+
+**Examples of changes which are not fully-compatible include:**
+
+* a release that no longer supports the same set of JREs, or that requires new 
libraries to be added to the classpath
+* changing a public or protected method signature
+* changing the default value of an attribute in a behaviour-impacting way
+* removing a class, interface, method or attribute from either the internal or 
external interface of the component
+
+Note that not every non-fully-compatible change will cause compilation or 
readily apparent run-time problems.
+
+Generally speaking, a fully-compatible change will at most change the private 
interface of a component, or simply add classes, methods and attributes whose 
use is optional to both internal and external interface clients.
+
+### 3.2 - Interface-compatible changes
+
+Release _B_ is said to be "interface-compatible" with Release _A_ if (nearly) 
all clients that can be compiled with _A_ in the classpath can also be compiled 
with _B_ in the classpath, without changing the semantics of any public or 
protected member. A configuration or classpath change may be required.
+
+**Examples of interface-compatible changes include:**
+
+* all fully-compatible changes
+* changing a component such that it now depends upon an additional external 
library or configuration file
+
+**Examples of changes which are not interface-compatible include:**
+
+* changing a public or protected method signature
+* changing the default value of an attribute in a behaviour changing way
+* removing a class, interface, method or attribute from either the internal or 
external interface of the component
+
+Generally speaking, an interface-compatible change will at most change the 
private interface of a component, or simply add classes, methods and attributes 
whose use is optional to both internal and external interface clients.
+
+### 3.3 - External-interface-compatible changes
+
+Release _B_ is said to be "external-interface-compatible" with Release _A_ if 
(nearly) all clients that depend only on the external interface of a component 
and that can be compiled with _A_ in the classpath can also be compiled with 
_B_ in the classpath, without changing the semantics of any member in the 
_external_ interface. A configuration or classpath change may be required.
+
+**Examples of external-interface-compatible changes include:**
+
+* all interface-compatible changes
+* removing a class, interface, method or attribute from the internal interface 
of the component
+* a change to the internal or private interface of a component that requires a 
change in configuration settings or in the external libraries required to use 
the component
+* changes to the internal or private interface of a component without 
impacting the external interface
+
+**Examples of changes which are not external-interface-compatible include:**
+
+* changing the method signature of any method that is part of the external 
interface of the component
+* changing the default value of any attribute that is part of the external 
interface of the component in a behaviour changing way
+* removing a class, interface, method or attribute from external interface of 
the component
+
+Generally speaking, external-interface-compatible changes correspond to 
changes to at most the internal interface of the component or the addition of 
optional classes, interfaces or members to the external interface.
+
+## 4 - Release types
+
+We identify five types of releases: "**Major**", "**Minor**", "**Point**", 
"**Beta**" and "**Milestone**".
+
+Developers are encouraged to "upgrade" a release to a stronger type whenever 
the nature or scope of the change warrants it.
+
+### 4.1 - Major releases
+
+Major releases signify significant changes to a component. Developers _may_ 
perform a major release if there have been substantial improvements to the 
component. Developers _must_ perform a major release whenever the new release 
is not at least interface-compatible with the previous release.
+
+### 4.2 - Minor releases
+
+Minor releases signify enhancements to a component that do not necessitate a 
major release. Developers _may_ perform a minor release if the release is at 
least external-interface-compatible with the previous release.
+
+In other words, whenever a client depends upon at most the external interface 
of a component with a given minor release, it will work with all subsequent 
minor releases within that major release.
+
+### 4.3 - Point releases
+
+A point release typically involves simple bug fixes or optimizations and minor 
new features. Developers _may_ perform a point release if the release is at 
least interface-compatible with the previous release.
+
+In other words, whenever a client depends upon a component with a given point 
release, it will work with all subsequent point releases within that minor 
release.
+
+### 4.4 - Beta releases
+
+Developers may, at their option, perform a beta preview of any major, minor or 
point release. Beta releases may be performed for a variety of purposes such as:
+
+* Showcasing new, untested features
+* Providing early corrections of critical bugs
+* Generating a stable version before large-scale changes
+
+While every effort should be made to ensure the quality of released code, 
"beta" releases are essentially provided as-is with no guarantees of stability 
or maintenance.
+
+### 4.5 - Milestone releases
+
+Developers may, at their option, offer a milestone preview of any major 
release. A milestone release is appropriate when part of the overall component 
is fully functioning and the team wants to make it more widely available for 
testing. Those features implemented and those remaining to be implemented 
should be clearly defined and documented.
+
+While every effort should be made to ensure the quality of released code, 
"milestone" releases are essentially provided as-is with no guarantees of 
stability or maintenance.
+
+## 5 - Release numbers
+
+### 5.1 - Dissecting the release number  
+
+A release number is comprised of 3 components: the major release number, the 
minor release number, and an optional point release number. Here is a sample 
release number:
+
+**2.0.4**
+
+and it can be broken into three parts:
+
+* **major release**: 2
+* **minor release**: 0
+* **point release**: 4
+
+The next release of this component would increment the appropriate part of the 
release number, depending on the type of release (major, minor, or point). For 
example, a subsequent minor release would be version 2.1, or a subsequent major 
release would be 3.0.
+
+Note that release numbers are composed of three **integers**, not three 
_digits_. Hence if the current release is 3.9.4, the next minor release is 
3.10.0.
+
+### 5.2 - Beta release numbers
+
+Beta releases are denoted by adding "B" followed by the beta version number 
after the release number. For example, if the current release version is 2.0.4, 
and a developer wished to preview the next major release, the release would be 
labeled 3.0-B1.
+
+### 5.3 - Milestone release numbers
+
+Milestone releases are denoted by adding "M" followed by the milestone version 
number after the release number. For example, if the current release version is 
2.0.4, and a developer wished to preview the next major release, the release 
would be labeled 3.0-M1.
+
+## 6 - Development states
+
+We identify four possible states: "**in development**", "**beta**", 
"**released**", and "**unsupported**".
+
+### 6.1 - In development state
+
+When a component is "in development", it is new and still relatively unstable. 
Typically components in this state do not have any binary releases available 
beyond the nightly builds. Users should be made aware that this component may 
change its functionality or interface before a stable release is achieved. A 
"milestone" release may be made while the component is still "in development" 
to make the features currently implemented more widely available for testing in 
a more stable test version.
+
+### 6.2 - Beta state
+
+When a component has made significant progress toward release-quality code, 
the committers may vote to perform a "beta" release. At this point, the 
component state will change from "in development" to "beta". The component will 
remain in this state until it is ready for its first major release.
+
+Note that developers may skip vote to skip the "beta" state and go directly to 
"released", if the component is sufficiently stable.
+
+### 6.3 - Released state
+
+When a new component is finally production-quality, the developers may vote to 
perform the first major release. At this point, the component status will be 
changed from "beta" to "released". In the future this component will always be 
considered to be in the "released" state, even when new releases are initiated. 
The only exception is in the case of "unsupported" components.
+
+### 6.4 - Unsupported state
+
+Under rare circumstances, committers may vote to make a component 
"unsupported", if there are no resources to maintain the library or if it has 
been completely supplanted by another component. Only "released" components may 
become "unsupported"; components in other states will simply be terminated 
after a brief warning period.
+
+## 7 - Comments
+
+Using this approach it is possible to very precisely and concisely define the 
dependencies between a component and its clients.
+
+For example, suppose that the application Foo depends (only) upon features of 
the juneau-core component that are part of the external interface in release 
2.3.0. Then the maintainers of Foo can state with a high degree of certainty 
that Foo will work with any 2.x release of juneau-core (x >= 3).
+
+Similarly, suppose the application Bar depends upon features of juneau-core 
that were part of the internal interface of release 2.3.0. Then the maintainers 
of Bar can state with a high degree of certainty that Bar will work with any 
2.3.x release of juneau-core. Only once 2.4 (or 3.0) is released will Bar's 
developers have to re-evaluate.
+
+## 8 - End Notes
+
+* We say "nearly" here since there are rare or unusual circumstances in which 
changes that are usually "safe" may cause problems for a small number of users. 
For example, adding a new method to a component class shouldn't in general 
cause problems for any clients. But it may cause problems for some clients 
who've extended that class and already added a method with the same signature 
in their subclass.
diff --git a/docs/pages/developer-info/02.06.CodeFormattingStylesheet.md 
b/docs/pages/developer-info/02.06.CodeFormattingStylesheet.md
new file mode 100644
index 0000000000..dd95b12853
--- /dev/null
+++ b/docs/pages/developer-info/02.06.CodeFormattingStylesheet.md
@@ -0,0 +1,258 @@
+---
+id: 02.06.CodeFormattingStylesheet
+title: Using the code formatting stylesheet
+---
+
+This page contains comprehensive information about using the `javadoc.css` 
stylesheet for Apache Juneau JavaDoc documentation.
+
+## Overview
+
+The `javadoc.css` file is located at `docs/src/javadoc/javadoc.css` and 
provides comprehensive styling for all generated JavaDoc HTML pages. It 
includes both standard JavaDoc styles and extensive Juneau-specific 
customizations for enhanced documentation presentation.
+
+## Configuration
+
+The stylesheet is automatically configured in the root `pom.xml` file for the 
Maven Javadoc plugin:
+
+```xml
+<stylesheetfile>${maven.multiModuleProjectDirectory}/docs/src/javadoc/javadoc.css</stylesheetfile>
+```
+
+This ensures that all generated JavaDoc HTML files use the custom stylesheet 
when running:
+- `mvn javadoc:javadoc`
+- `mvn site`
+
+## Standard JavaDoc Styles
+
+The stylesheet includes comprehensive styling for standard JavaDoc elements:
+
+### Typography
+- **Fonts**: Uses DejaVu Sans for body text, DejaVu Sans Mono for code
+- **Base font size**: 14px
+- **Headings**: H1 (20px) through H6 (13px) with appropriate sizing
+
+### Navigation
+- **Top navigation bar**: Blue background (#4D7A97) with white text
+- **Sub-navigation**: Light gray background (#dee3e9)
+- **Active page indicator**: Orange highlight (#F8981D)
+- **Responsive design**: Mobile-friendly navigation with collapsible menu
+
+### Tables
+- **Summary tables**: Alternating row colors (white and #EEEEEF)
+- **Table tabs**: Interactive tabs for switching between different views
+- **Responsive columns**: Grid-based layouts that adapt to screen size
+
+### Links
+- **Standard links**: Blue (#4A6782) with orange hover (#bb7a2a)
+- **External links**: Automatically marked with an external link icon
+- **No underlines**: Clean link styling without default underlines
+
+## Juneau-Specific Custom Styles
+
+### Code Highlighting Tags
+
+The stylesheet provides extensive inline code highlighting tags for syntax 
coloring:
+
+#### Java Code Tags
+- `<jc>` - Java comment (green)
+- `<jd>` - Javadoc comment (#3f5fbf)
+- `<jt>` - Javadoc tag (#7f9fbf, bold)
+- `<jk>` - Java keyword (#7f0055, bold)
+- `<js>` - Java string (#00B)
+- `<jf>` - Java field (DarkBlue)
+- `<jsf>` - Java static field (DarkBlue, italic)
+- `<jsm>` - Java static method (italic)
+- `<ja>` - Java annotation (grey)
+- `<jp>` - Java parameter (#654040)
+- `<jv>` - Java local variable (#654040)
+
+#### XML Code Tags
+- `<xt>` - XML tag (DarkCyan)
+- `<xa>` - XML attribute (purple)
+- `<xc>` - XML comment (mediumblue)
+- `<xs>` - XML string (#00B, italic)
+- `<xv>` - XML value (black)
+
+#### Other Code Tags
+- `<mk>` - Manifest file key (DarkRed, bold)
+- `<mv>` - Manifest file value (DarkBlue)
+- `<cc>` - Config file comment (green)
+- `<cs>` - Config file section (DarkRed, bold)
+- `<ck>` - Config file key (DarkRed)
+- `<cv>` - Config file value (DarkBlue)
+
+#### Code Block Classes
+- `.bcode`, `.bjava`, `.bjson`, `.bxml`, `.bini`, `.buon`, `.burlenc`, 
`.bconsole`, `.bschema` - Bordered code blocks with left border and background
+- `.code` - Unbordered code block
+
+**Example:**
+```html
+<p class='bjava'>
+    <jk>public static void</jk> myMethod(<jk>int</jk> <jv>foo</jv>, String 
<jv>bar</jv>) {
+        System.<jsm>out</jsm>.println(<js>"Hello world!"</js>);
+    }
+</p>
+```
+
+### Special Classes
+
+#### Topic Headers
+- `h2.topic`, `h3.topic`, `h4.topic`, `h5.topic` - Styled topic headers with 
borders and background gradients
+- Automatically includes a decorative icon
+
+#### Tables
+- `table.styled` - Table with alternating row colors and styled borders
+- `table.unstyled` - Plain table with borders but no row coloring
+- `table.borderless` - Table without borders
+- `table.plain` - Table with plain borders
+- `table.striped` - Table with striped rows
+
+#### Lists
+- `ul.toc`, `ol.toc` - Table of contents with styled background
+- `ul.spaced-list`, `ol.spaced-list` - Lists with extra spacing between items
+- `ul.javatree`, `ol.javatree` - Java class hierarchy lists with special 
markers
+- `ul.seealso` - "See Also" lists with automatic label
+- `ul.notes` - Notes lists with automatic label
+- `ul.values` - Values lists with automatic label
+- `ul.format` - Format lists with automatic label
+
+#### Alert Blocks
+- `div.info` - Information block (blue border, light blue background)
+- `div.warn` - Warning block (orange border, light orange background)
+- `div.severe` - Severe warning block (red border, light red background)
+- `p.severe`, `p.warn`, `p.info`, `p.todo` - Paragraph-level alerts
+
+#### Special Elements
+- `.bordered` - Adds border around images or blocks
+- `.fixedWidth` - Forces block to be 800px wide
+- `a.doclink` - Styled link to documentation with dotted underline
+- `<l>` - Literal text tag
+- `<review>` - Review marker block (yellow background)
+- `<reviewed>` - Reviewed marker block (green background)
+
+#### Width Utilities
+- `.w400` - 400px width
+- `.w500` - 500px width
+- `.w800` - 800px width
+- `.w900` - 900px width
+- `.w1000` - 1000px width
+
+### Java Hierarchy Markers
+
+Special list item classes for displaying Java class hierarchies:
+- `li.jc` - Java class (green circle)
+- `li.jac` - Java abstract class (yellow circle)
+- `li.jic` - Java interface (purple diamond)
+- `li.ja` - Java annotation (cyan circle)
+- `li.je` - Java enum (brown circle)
+- `li.jf` - Java field (green circle)
+- `li.jm` - Java method (green circle)
+- `li.jp` - Java package (orange circle)
+
+## Usage Examples
+
+### Code Blocks with Syntax Highlighting
+
+```html
+/**
+ * Example method with highlighted code.
+ * 
+ * <p class='bjava'>
+ *     <jk>public</jk> <jk>void</jk> processData(<jk>String</jk> 
<jv>input</jv>) {
+ *         <jc>// Process the input</jc>
+ *         System.<jsm>out</jsm>.println(<js>"Processing: "</js> + 
<jv>input</jv>);
+ *     }
+ * </p>
+ */
+```
+
+### Styled Tables
+
+```html
+/**
+ * Configuration options:
+ * 
+ * <table class='styled'>
+ * <tr><th>Option</th><th>Description</th></tr>
+ * <tr><td>option1</td><td>First option</td></tr>
+ * <tr><td>option2</td><td>Second option</td></tr>
+ * </table>
+ */
+```
+
+### Alert Blocks
+
+```html
+/**
+ * <div class='warn'>
+ * <b>Warning:</b> This method may throw an exception.
+ * </div>
+ * 
+ * <div class='info'>
+ * <b>Note:</b> This feature was added in version 9.0.
+ * </div>
+ */
+```
+
+### Topic Headers
+
+```html
+/**
+ * <h3 class='topic'>Advanced Usage</h3>
+ * 
+ * This section covers advanced usage patterns.
+ */
+```
+
+### Java Hierarchy
+
+```html
+/**
+ * Class hierarchy:
+ * <ul class='javatree'>
+ * <li class='jp'>com.example</li>
+ * <li class='jc'>BaseClass</li>
+ * <li class='jc'>MyClass extends BaseClass</li>
+ * </ul>
+ */
+```
+
+## Customization
+
+To customize the JavaDoc appearance:
+
+1. Edit the `docs/src/javadoc/javadoc.css` file
+2. Regenerate the JavaDoc documentation:
+   ```bash
+   mvn javadoc:javadoc
+   ```
+   or
+   ```bash
+   mvn site
+   ```
+
+Changes will be reflected in all generated JavaDoc pages.
+
+## Responsive Design
+
+The stylesheet includes comprehensive responsive design support:
+- Mobile navigation with collapsible menu
+- Responsive table layouts that adapt to screen size
+- Flexible grid systems for multi-column layouts
+- Optimized typography for different screen sizes
+
+## Color Scheme
+
+The stylesheet uses a consistent color palette:
+- **Primary blue**: #4D7A97 (navigation, links)
+- **Orange accent**: #F8981D (active states, highlights)
+- **Hover orange**: #bb7a2a (link hovers)
+- **Light gray**: #dee3e9 (backgrounds, borders)
+- **Dark text**: #353833 (body text)
+- **Dark blue**: #2c4557 (headings)
+
+## Additional Resources
+
+For more information, see:
+- [Oracle JavaDoc 
Documentation](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html)
+- [Maven Javadoc 
Plugin](https://maven.apache.org/plugins/maven-javadoc-plugin/)
+
diff --git a/docs/pages/developer-info/02.08.DevelopmentWishList.md 
b/docs/pages/developer-info/02.08.DevelopmentWishList.md
new file mode 100644
index 0000000000..4f332cf0d6
--- /dev/null
+++ b/docs/pages/developer-info/02.08.DevelopmentWishList.md
@@ -0,0 +1,84 @@
+---
+id: 02.08.DevelopmentWishList
+title: Development wish list
+---
+
+This page contains an informal list of possible future feature work in Juneau. 
Please feel free to add to this list with ideas and put (+1 userid) next to 
items you're interested in.
+
+## Overall
+
+1. Investigate OpenAPI 3 support. The Swagger API is currently at Swagger 2.0.
+2. Proofread documentation. It would be good to clean up areas that are 
confusing.
+
+## juneau-marshall
+
+1. YAML support.  
+   This is kind of big though. Essentially cloning the JSON serializers and 
parsers and converting them to use YAML syntax.
+2. Other possible languages: BSON, Protobuf, Amazon Ion
+3. @JsonSchema validation support for all serializers and parsers.  
+   This is also kind of big. Basically adding SERIALIZER_validating and 
PARSER_validating settings (disabled by default) that would allow automatic 
schema validation of input and output just like we do for the OpenAPI 
serializer and parser.
+4. FreeMarker integration.
+5. Test @Header("\*") using maps/beans and related annotations.
+6. Simplify @Body annotation by merging @Schema into it.
+7. Test RestRequest.getRequest() and @Request as an annotation.
+8. Document RestRequest.getRequest().
+9. Find references to JsonSerializer.Simple
+
+## juneau-examples-core
+
+1. Creating generic JSON objects
+2. Defining XML namespaces
+
+## juneau-rest-examples
+
+1. Packaging as WAR files (documentation or article?)
+2. Customizing OPTIONS pages
+3. Rendering form entry pages
+4. Using the ZipFileList response handler
+5. Implementing console-output pages in HTML
+6. Using configuration files
+7. Making a bean traversable
+8. Using the Queryable converter
+9. Sending raw output
+10. Retrieving raw input
+11. Accessing request query parameters
+12. Accessing request path variables
+13. Accessing request content
+14. Accessing request header values
+15. Accessing the path pattern remainder
+16. Creating ResourceGroup pages
+17. Using matchers to define multiple Java methods to the same path pattern
+18. Using the Remoteable API
+19. Sending a redirect request
+20. Changing the stylesheet used by the HTML serializer
+21. Using the Introspector API to invoke methods on Java objects through REST 
calls
+22. Customizing serializers and parsers at the method level
+23. Accessing config file values
+24. Accessing request query parameters on URL-Encoded FORM posts without 
triggering HTML body to be read
+25. Accessing localized messages
+26. Defining your own response handlers
+27. Guarding access to a servlet or method
+28. Handling servlet initialization errors
+29. Handling exceptions that occur during response processing
+30. Customizing logging
+31. Creating an ATOM feed
+32. Creating a REST API against a file system
+33. Creating a Docker REST API
+34. Creating a REST API for storing and retrieving images
+35. Creating a REST API for echoing requests
+36. Creating a Tumblr REST API
+37. Creating a Cloudant REST API
+38. Using onPreCall() to intercept requests before processing
+39. Using onPostCall() to intercept requests after processing
+40. Creating child resources programmatically
+41. Defining default request headers
+42. Defining default response headers
+43. Defining your own var-resolver variables
+44. Serving up static files inside the /htdocs embedded package
+45. Defining MIME types of files in the /htdocs folder using the 
createMimitypesFileTypeMap() method
+46. Defining the title and description of a servlet programmatically using 
getDescription() and getTitle().
+47. Setting properties programmatically using RestServlet.setProperty()
+48. Setting and saving config file properties
+49. Defining your own abstract subclass of RestServlet or RestServletDefault
+50. Adding GZip support
+51. Accessing environment variables in config files
diff --git a/docs/pages/developer-info/03.00.CurrentMembers.md 
b/docs/pages/developer-info/03.00.CurrentMembers.md
new file mode 100644
index 0000000000..76f88c1934
--- /dev/null
+++ b/docs/pages/developer-info/03.00.CurrentMembers.md
@@ -0,0 +1,27 @@
+---
+id: 03.00.CurrentMembers
+title: Current Members
+---
+
+## Apache Juneau Project Management Committee (PMC) and Committers
+
+The following is a list of current PMC members and committers for the Apache 
Juneau project.
+
+| Name | Role | User ID |
+|------|------|---------|
+| John D. Ament | PMC / Committer | johnadament |
+| Steve Blackmon | PMC / Committer | sblackmon |
+| James Bognar | PMC Chair / Committer | jamesbognar |
+| David M Goddard | PMC / Committer | dmg |
+| Peter Haumer | PMC / Committer | phaumer |
+| Raphi D Lee | PMC / Committer | yidonguk |
+| Ayeshmantha Perera | PMC / Committer | akayeshmantha |
+| Craig L Russell | PMC / Committer | clr |
+| Stian Soiland-Reyes | PMC / Committer | stain |
+| Shalitha Suranga | PMC / Committer | shalithasuranga |
+| Jochen Wiedmann | PMC / Committer | jochen |
+| Marcelo Vieira | PMC / Committer | marcelosouzav |
+| Gary Gregory | PMC / Committer | ggregory |
+
+For the most up-to-date information, please refer to the [GitHub 
Wiki](https://github.com/apache/juneau/wiki).
+
diff --git a/docs/pages/developer-info/04.00.BlogIndex.md 
b/docs/pages/developer-info/04.00.BlogIndex.md
new file mode 100644
index 0000000000..05c717a7e8
--- /dev/null
+++ b/docs/pages/developer-info/04.00.BlogIndex.md
@@ -0,0 +1,32 @@
+---
+id: 04.00.BlogIndex
+title: Blog Posts
+---
+
+## Blog Posts
+
+This page contains blog posts from the Apache Juneau project.
+
+### 2018
+
+- [JUnit Test Results](/docs/developer-info/04.01.JUnitTestResults) (May 11, 
2018)
+- [REST Media-Type-less POJO 
requests](/docs/developer-info/04.02.RESTMediaTypeLessPOJORequests) (May 15, 
2018)
+- [Juneau 7.2.0 documentation 
preview](/docs/developer-info/04.03.Juneau720DocumentationPreview) (July 25, 
2018)
+- [Support for auto-validation in Swagger 
annotations](/docs/developer-info/04.04.SupportForAutoValidationInSwaggerAnnotations)
 (July 25, 2018)
+- [Documentation reorg](/docs/developer-info/04.05.DocumentationReorg) (July 
25, 2018)
+- [Behavior change on default @RestMethod(path) 
value](/docs/developer-info/04.06.BehaviorChangeOnDefaultRestMethodPath) (July 
29, 2018)
+- [Dual-purpose REST Java 
interfaces](/docs/developer-info/04.07.DualPurposeRESTJavaInterfaces) (October 
7, 2018)
+- [Pet Store application now uses 
JPA](/docs/developer-info/04.08.PetStoreApplicationNowUsesJPA) (October 7, 2018)
+- [New article: Dual-purpose (end-to-end) 
interfaces](/docs/developer-info/04.09.NewArticleDualPurposeInterfaces) 
(October 19, 2018)
+- [Default system 
configuration](/docs/developer-info/04.10.DefaultSystemConfiguration) (December 
6, 2018)
+- [Spring Boot Integration](/docs/developer-info/04.11.SpringBootIntegration) 
(December 7, 2018)
+- [Source javadoc tag](/docs/developer-info/04.12.SourceJavadocTag) (December 
8, 2018)
+- [Import statements in configuration 
files](/docs/developer-info/04.13.ImportStatementsInConfigurationFiles) 
(December 31, 2018)
+
+### 2019
+
+- [Serializer and parser configuration 
annotations](/docs/developer-info/04.14.SerializerAndParserConfigurationAnnotations)
 (May 14, 2019)
+
+### 2020
+
+- [New and Improved 
RestClient](/docs/developer-info/04.15.NewAndImprovedRestClient) (July 22, 2020)
diff --git a/docs/pages/developer-info/04.01.JUnitTestResults.md 
b/docs/pages/developer-info/04.01.JUnitTestResults.md
new file mode 100644
index 0000000000..ad5b67d941
--- /dev/null
+++ b/docs/pages/developer-info/04.01.JUnitTestResults.md
@@ -0,0 +1,10 @@
+---
+id: 04.01.JUnitTestResults
+title: JUnit Test Results
+date: 2018-05-11
+authors:
+  - name: James Bognar
+---
+
+FYI....JUnit testcase results have been added to the Jenkins builds...
+
diff --git a/docs/pages/developer-info/04.02.RESTMediaTypeLessPOJORequests.md 
b/docs/pages/developer-info/04.02.RESTMediaTypeLessPOJORequests.md
new file mode 100644
index 0000000000..c617b37d36
--- /dev/null
+++ b/docs/pages/developer-info/04.02.RESTMediaTypeLessPOJORequests.md
@@ -0,0 +1,16 @@
+---
+id: 04.02.RESTMediaTypeLessPOJORequests
+title: REST Media-Type-less POJO requests
+date: 2018-05-15
+authors:
+  - name: James Bognar
+---
+
+In 7.2.0, I'm adding support for POJO REST requests that don't include Accept 
and Media-Type headers.
+
+Previously, if your requests did not contain Accept or Content-Type headers, 
you had to use Readers and Writers to work with the HTTP request and response 
bodies. Otherwise you would get Not Acceptable (406) and Unsupported Media Type 
(415) response codes.
+
+This behavior is now being relaxed. If your request does not contain 
media-type headers, then you can still used POJOs for requests and responses.
+
+For example, this is a snippet from the Javadoc on the Body annotation 
describing the types of objects you can use in REST Java methods to represent 
the body of the request:
+
diff --git a/docs/pages/developer-info/04.03.Juneau720DocumentationPreview.md 
b/docs/pages/developer-info/04.03.Juneau720DocumentationPreview.md
new file mode 100644
index 0000000000..015aa6b60a
--- /dev/null
+++ b/docs/pages/developer-info/04.03.Juneau720DocumentationPreview.md
@@ -0,0 +1,18 @@
+---
+id: 04.03.Juneau720DocumentationPreview
+title: Juneau 7.2.0 documentation preview
+date: 2018-07-25
+authors:
+  - name: James Bognar
+---
+
+Juneau 7.2.0 is close to release but there is still a considerable amount of 
documentation to be written. The Javadocs on the classes themselves should be 
mostly complete, but much remains to be written in the overview document.
+
+I've uploaded a preview of the Javadocs so far here:
+
+http://juneau.apache.org/site/apidocs_preview/index.html
+
+To help identify new and in-progress documentation, I've added temporary color 
coding to new and modified sections...
+
+If there is any documentation lacking, now would be a good time to point it 
out (smile)
+
diff --git 
a/docs/pages/developer-info/04.04.SupportForAutoValidationInSwaggerAnnotations.md
 
b/docs/pages/developer-info/04.04.SupportForAutoValidationInSwaggerAnnotations.md
new file mode 100644
index 0000000000..71bd493903
--- /dev/null
+++ 
b/docs/pages/developer-info/04.04.SupportForAutoValidationInSwaggerAnnotations.md
@@ -0,0 +1,29 @@
+---
+id: 04.04.SupportForAutoValidationInSwaggerAnnotations
+title: Support for auto-validation in Swagger annotations
+date: 2018-07-25
+authors:
+  - name: James Bognar
+---
+
+In 7.2, we're introducing auto-validation of Swagger annotations. What this 
means is that the various Swagger annotations are not just used for populating 
the Swagger JSON / UI, but are actively used in serializing/parsing/validating 
the HTTP parts.
+
+For example:
+
+This example shows a parameter of type **PetStatus[]** (which happens to be 
enums, but could also be POJOs as well). The **type** and **collectionFormat** 
attributes tell the framework to parse the incoming value as a comma-delimited 
list. The **_enum** shows the possible valid values. A **BadRequest** is thrown 
if any values don't match.
+
+Part of this change includes combining the client-side and server-side 
annotations into a single set of annotations (no more confusing 
**org.apache.juneau.remoteable.Query** with 
**org.apache.juneau.rest.annotation.Query**).
+
+Features include:
+
+* Support for all of Swagger 2.0.
+* Auto-validation for:
+  * Numeric values (**minimum**, **maximum**, **exclusiveMinimum**, 
**exclusiveMaximum**, **multipleOf**).
+  * String values (**minLength**, **maxLength**, **enum**).
+  * Collection values (**items**, **minItems**, **maxItems**, **uniqueItems**).
+  * Object values (**properties**, **maxProperties**, **minProperties**, 
**additionalProperties**).
+  * Existence of values (**required**, **allowEmptyValue**).
+* Support for both client-side and server-side annotations.
+* Works on the **Body** annotation as well. If the media-type of the body does 
not match an existing serializer/parser, then the Swagger rules are used for 
marshalling.
+* UON notation is still supported, so you can still represent arbitrary POJOs 
as any of the HTTP parts. However, you have to explicitly specify 
**format="uon"**.
+
diff --git a/docs/pages/developer-info/04.05.DocumentationReorg.md 
b/docs/pages/developer-info/04.05.DocumentationReorg.md
new file mode 100644
index 0000000000..276f46643c
--- /dev/null
+++ b/docs/pages/developer-info/04.05.DocumentationReorg.md
@@ -0,0 +1,16 @@
+---
+id: 04.05.DocumentationReorg
+title: Documentation reorg
+date: 2018-07-25
+authors:
+  - name: James Bognar
+---
+
+FYI....I've broken up the **overview.html** file into individual topics:
+
+The overview document was just getting too unwieldy (the Eclipse HTML editor 
struggled with it). The smaller parts should be easier to work with, and 
reorganizing pages should now be much easier. Also, broken links should now be 
fewer in number.
+
+The **DocGenerator** class will take all the individual pages and combine them 
into the same **overview.html** page as before.
+
+The generator is not currently part of the build process so it has to be 
executed manually to generate the overview.
+
diff --git 
a/docs/pages/developer-info/04.06.BehaviorChangeOnDefaultRestMethodPath.md 
b/docs/pages/developer-info/04.06.BehaviorChangeOnDefaultRestMethodPath.md
new file mode 100644
index 0000000000..bd09a701cd
--- /dev/null
+++ b/docs/pages/developer-info/04.06.BehaviorChangeOnDefaultRestMethodPath.md
@@ -0,0 +1,18 @@
+---
+id: 04.06.BehaviorChangeOnDefaultRestMethodPath
+title: Behavior change on default @RestMethod(path) value
+date: 2018-07-29
+authors:
+  - name: James Bognar
+---
+
+There's a behavior change being made to the default value on 
**@RestMethod(path)**. If not specified, the value is now inferred from the 
Java method name.
+
+This can result in cleaner-looking code.
+
+The previous behavior was to default to the value **"/\*"**.
+
+More information can be found here:
+
+http://juneau.apache.org/site/apidocs_preview/overview-summary.html#juneau-rest-server.RestMethod
+
diff --git a/docs/pages/developer-info/04.07.DualPurposeRESTJavaInterfaces.md 
b/docs/pages/developer-info/04.07.DualPurposeRESTJavaInterfaces.md
new file mode 100644
index 0000000000..4c1e6da403
--- /dev/null
+++ b/docs/pages/developer-info/04.07.DualPurposeRESTJavaInterfaces.md
@@ -0,0 +1,27 @@
+---
+id: 04.07.DualPurposeRESTJavaInterfaces
+title: Dual-purpose REST Java interfaces
+date: 2018-10-07
+authors:
+  - name: James Bognar
+---
+
+**New in Juneau 7.2.1:**
+
+Method and argument annotations such as @RestMethod, @Path, etc..., are now 
inheritable from parent classes and interfaces.
+
+This means you can now define the same Java interface for both your server and 
client side APIs.
+
+For example, the Pet Store application now defines a top-level **PetStore** 
interface:
+
+The **PetStoreResource** class implements this interface using the normal 
RestServlet API.
+
+In this particular case, the @RestMethod annotations are specified in the 
implementation class, although they could be located in the interface as well.
+
+The **PetStore** interface can be used as the remote proxy interface like so:
+
+The advantages to this design approach are:
+
+* It's much easier to keep server and client side APIs in sync since they're 
working off the same interface.
+* The annotations can be moved into your interface where they won't interfere 
with the readability of your servlet code.
+
diff --git a/docs/pages/developer-info/04.08.PetStoreApplicationNowUsesJPA.md 
b/docs/pages/developer-info/04.08.PetStoreApplicationNowUsesJPA.md
new file mode 100644
index 0000000000..bea5ed4195
--- /dev/null
+++ b/docs/pages/developer-info/04.08.PetStoreApplicationNowUsesJPA.md
@@ -0,0 +1,16 @@
+---
+id: 04.08.PetStoreApplicationNowUsesJPA
+title: Pet Store application now uses JPA
+date: 2018-10-07
+authors:
+  - name: James Bognar
+---
+
+The Pet Store application has been upgraded to use JPA for persistence. It's 
now possible to marshall JPA beans using Juneau serializers and parsers.
+
+For example, the Pet bean below combines JPA and Juneau annotations:
+
+One noted enhancements is that you can now define bean-property annotations 
(e.g. @BeanProperty, @Html, @Schema, ...) on private bean fields just like JPA 
annotations.
+
+Also, the @Schema annotation has been enhanced to provide more information for 
bean properties in the auto-generated Swagger:
+
diff --git a/docs/pages/developer-info/04.09.NewArticleDualPurposeInterfaces.md 
b/docs/pages/developer-info/04.09.NewArticleDualPurposeInterfaces.md
new file mode 100644
index 0000000000..25b81155a9
--- /dev/null
+++ b/docs/pages/developer-info/04.09.NewArticleDualPurposeInterfaces.md
@@ -0,0 +1,12 @@
+---
+id: 04.09.NewArticleDualPurposeInterfaces
+title: New article: Dual-purpose (end-to-end) interfaces
+date: 2018-10-19
+authors:
+  - name: James Bognar
+---
+
+FYI...new article added to Javadocs:
+
+http://juneau.apache.org/site/apidocs_preview/overview-summary.html#juneau-rest-client.RestProxies.DualPurposeInterfaces
+
diff --git a/docs/pages/developer-info/04.10.DefaultSystemConfiguration.md 
b/docs/pages/developer-info/04.10.DefaultSystemConfiguration.md
new file mode 100644
index 0000000000..a9a271bb36
--- /dev/null
+++ b/docs/pages/developer-info/04.10.DefaultSystemConfiguration.md
@@ -0,0 +1,43 @@
+---
+id: 04.10.DefaultSystemConfiguration
+title: Default system configuration
+date: 2018-12-06
+authors:
+  - name: James Bognar
+---
+
+In 8.0, I'll be adding the concept of a default system configuration. One of 
the annoyances of setting up the Juneau REST resources to work with Spring Boot 
is that you have to manually set the "juneau.configFile" system property so 
that our servlets know where to look for configuration. With a default system 
configuration, this requirement goes away.
+
+Being added is a Config.getSystemDefault() static method that returns the 
system default configuration.
+
+If "juneau.configFile" is set, it will continue to look for a configuration 
file with that name in either the home directory or classpath. If not, then it 
will look for the following:
+
+* In the home directory:
+  * `<jar-name>.cfg`
+  * Any files that end with .cfg in the JVM home directory.
+* In the classpath (as part of the jar):
+  * `<jar-name>.cfg`
+  * `juneau.cfg`
+  * `default.cfg`
+
+Note that by placing it in your jar, you gain having everything packaged as a 
single uber-jar, but lose persistence (since it's not writeable).
+
+Also being added:
+
+* ConfigClasspathStore - A ConfigStore for reading configs from the context 
classpath. Note that this is a read-only store.
+* ConfigStore.exists(name) - New method on interface for checking for the 
existence of a configuration.
+
+Your REST servlets can refer to the system default configuration with the 
special keyword "SYSTEM_DEFAULT".
+
+For example:
+
+```java
+// Always use system default
+@RestResource(config="SYSTEM_DEFAULT")
+
+// Use system property if set or the system default if not.
+@RestResource(config="$S{juneau.configFile,SYSTEM_DEFAULT}")
+```
+
+There is a corresponding Config.setSystemDefault(Config) for overriding the 
system default configuration.
+
diff --git a/docs/pages/developer-info/04.11.SpringBootIntegration.md 
b/docs/pages/developer-info/04.11.SpringBootIntegration.md
new file mode 100644
index 0000000000..4618473a13
--- /dev/null
+++ b/docs/pages/developer-info/04.11.SpringBootIntegration.md
@@ -0,0 +1,22 @@
+---
+id: 04.11.SpringBootIntegration
+title: Spring Boot Integration
+date: 2018-12-07
+authors:
+  - name: James Bognar
+---
+
+Hi all,
+
+I've made some modifications to the work that Marcelo contributed for the 
Spring Boot integration. I still consider this in flux though and suggestions 
are welcome.
+
+Here's the updated project layout:
+
+Here's what it looks like to start up a Spring app with Juneau Examples REST 
resources:
+
+Another option is to add the @JuneauRest annotation on your configuration bean 
method:
+
+The root resource will be initialized with the **SpringRestResourceResolver** 
which allows for child resources to be defined as injectable Spring beans.
+
+The app can be launched from Eclipse using the 
**juneau-examples-rest-springboot.launch** file. It will bring up the REST 
examples on port 5000.
+
diff --git a/docs/pages/developer-info/04.12.SourceJavadocTag.md 
b/docs/pages/developer-info/04.12.SourceJavadocTag.md
new file mode 100644
index 0000000000..0d99908040
--- /dev/null
+++ b/docs/pages/developer-info/04.12.SourceJavadocTag.md
@@ -0,0 +1,16 @@
+---
+id: 04.12.SourceJavadocTag
+title: Source javadoc tag
+date: 2018-12-08
+authors:
+  - name: James Bognar
+---
+
+I've added a Javadoc taglet for quickly linking to source code on GitHub: 
"**`{@source}`**" or "**`{@source label}`**"
+
+It can be added to class-level javadocs like so:
+
+Based on the file location in the source tree, it will calculate the GitHub 
link:
+
+I think this will be particularly useful if you want to provide source links 
in example code javadocs.
+
diff --git 
a/docs/pages/developer-info/04.13.ImportStatementsInConfigurationFiles.md 
b/docs/pages/developer-info/04.13.ImportStatementsInConfigurationFiles.md
new file mode 100644
index 0000000000..8b32785082
--- /dev/null
+++ b/docs/pages/developer-info/04.13.ImportStatementsInConfigurationFiles.md
@@ -0,0 +1,16 @@
+---
+id: 04.13.ImportStatementsInConfigurationFiles
+title: Import statements in configuration files
+date: 2018-12-31
+authors:
+  - name: James Bognar
+---
+
+Support for import statements in configuration files has just been added:
+
+This is still a work-in-progress. The most difficult aspect was correctly 
handling listener events for changes made in imported configurations, including 
changes due to dynamically added or removed import statements. I'm still not 
certain I've got all the concurrency aspects worked out correctly yet and 
there's still more testing to be done.
+
+More information can be found in the docs:
+
+http://juneau.apache.org/site/apidocs-8.0.1/overview-summary.html#juneau-config.Imports
+
diff --git 
a/docs/pages/developer-info/04.14.SerializerAndParserConfigurationAnnotations.md
 
b/docs/pages/developer-info/04.14.SerializerAndParserConfigurationAnnotations.md
new file mode 100644
index 0000000000..429ef8298a
--- /dev/null
+++ 
b/docs/pages/developer-info/04.14.SerializerAndParserConfigurationAnnotations.md
@@ -0,0 +1,23 @@
+---
+id: 04.14.SerializerAndParserConfigurationAnnotations
+title: Serializer and parser configuration annotations
+date: 2019-05-14
+authors:
+  - name: James Bognar
+---
+
+Added in 8.0.1 is a simplified approach for customizing serializers and 
parsers in REST interfaces using annotations.
+
+The following example shows the old approach of using a generic 
**@RestResource(properties)** annotations, and the new approach of using 
specialized annotations:
+
+Annotations are provided for all serializers and parsers:
+
+Features:
+
+* Annotations can be applied to classes and methods.
+* Annotations can also be applied to parent classes and methods and are 
combinable and overridable, applied in parent-to-child order.
+* All annotations support SVL variables (e.g. "$C{myConfigVar}").
+* Default values for all annotations can be set as system properties.
+* Default values for all annotations can also be set in the main configuration 
file or application.properties file.
+* Annotations can be applied to serializers and parsers directly using new 
**applyAnnotations(Class)** and **applyAnnotations(Method)** defined on the 
serializer and parser builder and group builder classes.
+
diff --git a/docs/pages/developer-info/04.15.NewAndImprovedRestClient.md 
b/docs/pages/developer-info/04.15.NewAndImprovedRestClient.md
new file mode 100644
index 0000000000..fb84f31746
--- /dev/null
+++ b/docs/pages/developer-info/04.15.NewAndImprovedRestClient.md
@@ -0,0 +1,59 @@
+---
+id: 04.15.NewAndImprovedRestClient
+title: New and Improved RestClient
+date: 2020-07-22
+authors:
+  - name: James Bognar
+---
+
+It's been a while since I've made any updates and wanted to let the community 
know what I've been working on in 8.1.4. Currently in the snapshot release is 
an entirely new RestClient API!
+
+The old RestClient API sort of grew organically as a 2nd-class citizen to the 
server-side API. As such, it wasn't well tested and didn't fully take advantage 
of the existing Apache HttpClient APIs. I was often finding bugs and 
functionality often duplicated what already existed in HttpClient.
+
+The new API includes all the same functionality of the old, but with the 
following advantages:
+
+* Extends directly from the Apache HttpComponents and Apache HttpClient APIs 
instead of merely using them.
+* APIs are written for easy extension.
+* Adds fluent-style coding to HTTP calls including easy-to-use fluent 
assertions.
+* Adds support for multiple simultaneous languages (including universal 
language support).
+* Is nearly 100% unit tested.
+
+Here's an example of a fluent call from client creation to HTTP request and 
handling:
+
+Constructing clients for supporting multiple languages is now as easy as:
+
+Parsers and serializers can be easily configured via convenience builder 
methods like so:
+
+HTTP parts (headers, query/form-data parameters) now support dynamically 
changing values through Suppliers:
+
+Full support for OpenAPI part schema serialization is provided on all HTTP 
parts using a simple syntax on requests:
+
+...and responses:
+
+Response bodies can now be processed multiple times:
+
+This combined with a new powerful assertions API allows you to easily perform 
complex fluent calls:
+
+For example, it's even possible to do complex assertions that involve parsing 
and serialization:
+
+The new API still supports Remote proxy interfaces (but with some added new 
features):
+
+Logging and debugging has been simplified:
+
+...which produces the following console output:
+
+The RestClient class extends directly from Apache HttpClient and so inherits 
the same functionality. Fluent setters have been provided on the builder class 
to make using these existing features easy:
+
+The RestClient class (and other classes) can be extended as well to provide 
any sort of customization needed:
+
+Additionally, the two separate MockRest (for server side testing) and 
MockRemote (for remote interface testing) have been replaced with a single 
MockRestClient class that extends directly from RestClient which allows you to 
take full advantage of the new assertions APIs as part of your unit tests:
+
+The MockRestClient class can also wrap instantiated beans which is 
particularly useful if you're using Spring Boot for deployment of your REST 
servlets:
+
+The following shows how to test remote interfaces using the new unified API:
+
+See the updated Javadocs for more information:
+
+* 9 - juneau-rest-client
+* 10 - juneau-rest-mock
+
diff --git a/docs/pages/developer-info/05.00.ArticlesIndex.md 
b/docs/pages/developer-info/05.00.ArticlesIndex.md
new file mode 100644
index 0000000000..d6dc6d836f
--- /dev/null
+++ b/docs/pages/developer-info/05.00.ArticlesIndex.md
@@ -0,0 +1,17 @@
+---
+id: 05.00.ArticlesIndex
+title: Articles
+---
+
+## Articles
+
+This page contains links to technical articles about Apache Juneau published 
on external sites.
+
+### 2018
+
+- **November 12, 2018** - [Serializing and deserializing POJOs into many 
formats using Apache 
Juneau](https://medium.com/@shalithasuranga/serializing-and-deserializing-pojos-in-to-many-formats-using-apache-juneau-6b68d97aee6c)
 by Shalitha Suranga
+- **December 15, 2018** - [Construct HTML fragments, Atom feeds, Swagger 
documents using Apache 
Juneau](https://medium.com/@ayeshmanthaperera/construct-html-fragments-as-java-objects-using-apache-juneau-aeb9a9c5c2ca)
 by Ayeshmantha Perera
+
+### 2019
+
+- **October 21, 2019** - [Pet Store with Apache Juneau Part 
1](https://dev.to/robledokari/pet-store-with-apache-juneau-part-1-5cgm) by 
Karina Robledo
diff --git a/docs/sidebars.ts b/docs/sidebars.ts
index 43074b89b0..9c324883ef 100644
--- a/docs/sidebars.ts
+++ b/docs/sidebars.ts
@@ -1945,6 +1945,158 @@ const sidebars: SidebarsConfig = {
                                },
                        ],
                },
+               // Developer Info section
+               {
+                       type: 'category',
+                       label: 'Developer Info',
+                       collapsed: false,
+                       items: [
+                               {
+                                       type: 'doc',
+                                       id: 
'developer-info/01.00.DeveloperLinks',
+                                       label: '1. Developer Links',
+                               },
+                               {
+                                       type: 'category',
+                                       label: '2. How-to Articles',
+                                       collapsed: false,
+                                       items: [
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/02.01.BecomingAContributor',
+                                                       label: '2.1. Becoming a 
contributor',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/02.02.NonCommittersContribute',
+                                                       label: '2.2. How 
non-committers can contribute code',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/02.03.NewMemberGuidelines',
+                                                       label: '2.3. New member 
guidelines',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/02.04.NewReleaseGuidelines',
+                                                       label: '2.4. New 
release guidelines',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/02.05.VersioningGuidelines',
+                                                       label: '2.5. Versioning 
guidelines',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/02.06.CodeFormattingStylesheet',
+                                                       label: '2.6. Using the 
code formatting stylesheet',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/02.08.DevelopmentWishList',
+                                                       label: '2.7. 
Development wish list',
+                                               },
+                                       ],
+                               },
+                               {
+                                       type: 'doc',
+                                       id: 
'developer-info/03.00.CurrentMembers',
+                                       label: '3. Current Members',
+                               },
+                               {
+                                       type: 'category',
+                                       label: '4. Blog',
+                                       collapsed: false,
+                                       items: [
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.00.BlogIndex',
+                                                       label: '4.0. Blog 
Posts',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.01.JUnitTestResults',
+                                                       label: '4.1. JUnit Test 
Results (2018-05-11)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.02.RESTMediaTypeLessPOJORequests',
+                                                       label: '4.2. REST 
Media-Type-less POJO requests (2018-05-15)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.03.Juneau720DocumentationPreview',
+                                                       label: '4.3. Juneau 
7.2.0 documentation preview (2018-07-25)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.04.SupportForAutoValidationInSwaggerAnnotations',
+                                                       label: '4.4. Support 
for auto-validation in Swagger annotations (2018-07-25)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.05.DocumentationReorg',
+                                                       label: '4.5. 
Documentation reorg (2018-07-25)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.06.BehaviorChangeOnDefaultRestMethodPath',
+                                                       label: '4.6. Behavior 
change on default @RestMethod(path) (2018-07-29)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.07.DualPurposeRESTJavaInterfaces',
+                                                       label: '4.7. 
Dual-purpose REST Java interfaces (2018-10-07)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.08.PetStoreApplicationNowUsesJPA',
+                                                       label: '4.8. Pet Store 
application now uses JPA (2018-10-07)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.09.NewArticleDualPurposeInterfaces',
+                                                       label: '4.9. New 
article: Dual-purpose interfaces (2018-10-19)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.10.DefaultSystemConfiguration',
+                                                       label: '4.10. Default 
system configuration (2018-12-06)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.11.SpringBootIntegration',
+                                                       label: '4.11. Spring 
Boot Integration (2018-12-07)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.12.SourceJavadocTag',
+                                                       label: '4.12. Source 
javadoc tag (2018-12-08)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.13.ImportStatementsInConfigurationFiles',
+                                                       label: '4.13. Import 
statements in configuration files (2018-12-31)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.14.SerializerAndParserConfigurationAnnotations',
+                                                       label: '4.14. 
Serializer and parser configuration annotations (2019-05-14)',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'developer-info/04.15.NewAndImprovedRestClient',
+                                                       label: '4.15. New and 
Improved RestClient (2020-07-22)',
+                                               },
+                                       ],
+                               },
+                               {
+                                       type: 'doc',
+                                       id: 
'developer-info/05.00.ArticlesIndex',
+                                       label: '5. Articles',
+                               },
+                       ],
+               },
                // Release Notes section 
                {
                        type: 'category',
@@ -1955,6 +2107,21 @@ const sidebars: SidebarsConfig = {
                                        type: 'category',
                                        label: 'Version 9.x',
                                        items: [
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'release-notes/9.2.0',
+                                                       label: '9.2.0',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'release-notes/9.1.0',
+                                                       label: '9.1.0',
+                                               },
+                                               {
+                                                       type: 'doc',
+                                                       id: 
'release-notes/9.0.1',
+                                                       label: '9.0.1',
+                                               },
                                                {
                                                        type: 'doc',
                                                        id: 
'release-notes/9.0.0',
diff --git a/docs/static/developer-info/how-to/NonCommittersContribute.1.png 
b/docs/static/developer-info/how-to/NonCommittersContribute.1.png
new file mode 100644
index 0000000000..46c58f11a4
Binary files /dev/null and 
b/docs/static/developer-info/how-to/NonCommittersContribute.1.png differ
diff --git a/docs/static/developer-info/how-to/NonCommittersContribute.2.png 
b/docs/static/developer-info/how-to/NonCommittersContribute.2.png
new file mode 100644
index 0000000000..02cde8c126
Binary files /dev/null and 
b/docs/static/developer-info/how-to/NonCommittersContribute.2.png differ


Reply via email to