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 f2ee262cd Update new docs
f2ee262cd is described below
commit f2ee262cd8a69f6d24ebd7945fa12847fdc354f2
Author: James Bognar <[email protected]>
AuthorDate: Mon Sep 15 16:38:54 2025 -0400
Update new docs
---
.../02.juneau-marshall/01.jm.Marshallers.html | 52 +--
juneau-docs-poc/docs/release-notes/5.0.0.07.md | 6 +-
juneau-docs-poc/docs/release-notes/5.0.0.09.md | 6 +-
juneau-docs-poc/docs/release-notes/5.0.0.10.md | 4 +-
juneau-docs-poc/docs/release-notes/5.0.0.11.md | 2 +-
juneau-docs-poc/docs/release-notes/5.0.0.12.md | 4 +-
juneau-docs-poc/docs/release-notes/5.0.0.13.md | 4 +-
juneau-docs-poc/docs/release-notes/5.0.0.14.md | 6 +-
juneau-docs-poc/docs/release-notes/5.0.0.18.md | 2 +-
juneau-docs-poc/docs/release-notes/5.0.0.20.md | 6 +-
juneau-docs-poc/docs/release-notes/5.0.0.21.md | 4 +-
juneau-docs-poc/docs/release-notes/5.0.0.22.md | 4 +-
juneau-docs-poc/docs/release-notes/5.0.0.24.md | 4 +-
juneau-docs-poc/docs/release-notes/5.0.0.25.md | 4 +-
juneau-docs-poc/docs/release-notes/5.1.0.00.md | 4 +-
juneau-docs-poc/docs/release-notes/5.1.0.03.md | 4 +-
juneau-docs-poc/docs/release-notes/5.1.0.10.md | 8 +-
juneau-docs-poc/docs/release-notes/5.1.0.11.md | 8 +-
juneau-docs-poc/docs/release-notes/5.1.0.12.md | 4 +-
juneau-docs-poc/docs/release-notes/5.1.0.13.md | 6 +-
juneau-docs-poc/docs/release-notes/5.1.0.14.md | 6 +-
juneau-docs-poc/docs/release-notes/5.1.0.15.md | 6 +-
juneau-docs-poc/docs/release-notes/5.1.0.16.md | 6 +-
juneau-docs-poc/docs/release-notes/5.1.0.17.md | 6 +-
juneau-docs-poc/docs/release-notes/5.1.0.18.md | 2 +-
juneau-docs-poc/docs/release-notes/5.1.0.19.md | 6 +-
juneau-docs-poc/docs/release-notes/5.1.0.20.md | 6 +-
juneau-docs-poc/docs/release-notes/5.2.0.0.md | 12 +-
juneau-docs-poc/docs/release-notes/5.2.0.1.md | 6 +-
juneau-docs-poc/docs/release-notes/6.0.0.md | 6 +-
juneau-docs-poc/docs/release-notes/6.0.1.md | 2 +-
juneau-docs-poc/docs/release-notes/6.1.0.md | 4 +-
juneau-docs-poc/docs/release-notes/6.2.0.md | 8 +-
juneau-docs-poc/docs/release-notes/6.3.0.md | 10 +-
juneau-docs-poc/docs/release-notes/6.3.1.md | 6 +-
juneau-docs-poc/docs/release-notes/6.4.0.md | 10 +-
juneau-docs-poc/docs/release-notes/7.0.0.md | 6 +-
juneau-docs-poc/docs/release-notes/7.0.1.md | 8 +-
juneau-docs-poc/docs/release-notes/7.1.0.md | 14 +-
juneau-docs-poc/docs/release-notes/7.2.0.md | 12 +-
juneau-docs-poc/docs/release-notes/7.2.1.md | 6 +-
juneau-docs-poc/docs/release-notes/8.0.0.md | 16 +-
juneau-docs-poc/docs/release-notes/8.1.0.md | 8 +-
juneau-docs-poc/docs/release-notes/8.1.1.md | 8 +-
juneau-docs-poc/docs/release-notes/8.1.2.md | 6 +-
juneau-docs-poc/docs/release-notes/8.1.3.md | 8 +-
juneau-docs-poc/docs/release-notes/8.2.0.md | 12 +-
juneau-docs-poc/docs/release-notes/9.0.0.md | 14 +-
.../docs/topics/02.01.Module-juneau-marshall.md | 9 +-
...02.Marshallers.md => 02.02.Marshallers-test.md} | 29 +-
...2.Marshallers.md => 02.02.Marshallers-test2.md} | 29 +-
juneau-docs-poc/docs/topics/02.02.Marshallers.md | 30 +-
.../topics/03.01.Module-juneau-marshall-rdf.md | 8 +-
.../docs/topics/04.01.Module-juneau-dto.md | 10 +-
.../docs/topics/05.01.Module-juneau-config.md | 6 +-
.../docs/topics/06.01.Module-juneau-assertions.md | 8 +-
.../docs/topics/07.01.Module-juneau-rest-common.md | 8 +-
.../docs/topics/08.01.Module-juneau-rest-server.md | 72 ++--
.../09.01.Module-juneau-rest-server-springboot.md | 8 +-
.../docs/topics/10.01.Module-juneau-rest-client.md | 8 +-
.../docs/topics/11.01.Module-juneau-rest-mock.md | 8 +-
.../12.01.Module-juneau-microservice-core.md | 8 +-
.../13.01.Module-juneau-microservice-jetty.md | 8 +-
.../docs/topics/16.03.App-juneau-petstore-api.md | 2 +-
juneau-docs-poc/docs/topics/temp.json | 0
juneau-docs-poc/html-to-md-converter.js | 410 +++++++++++++++++++++
.../src/components/ClassHierarchy.module.css | 160 +++++++-
juneau-docs-poc/src/components/ClassHierarchy.tsx | 61 ++-
juneau-docs-poc/src/css/custom.css | 167 ++++-----
69 files changed, 981 insertions(+), 430 deletions(-)
diff --git a/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html
b/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html
index 87511eda1..634ce091b 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html
@@ -21,34 +21,44 @@
and {@link oaj.parser.Parser} with convenience methods for
serializing and parsing POJOs.
</p>
<ul class='javatree'>
- <li class='jac'>{@link oaj.marshaller.Marshaller}
+ <li class='jac'>
+ {@link oaj.marshaller.Marshaller}
<ul>
- <li class='jm'><c>T</c> {@link
oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class<T>)}
+ <li class='jm'>
+ <c>T</c> {@link
oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class<T>)}
+ </li>
</ul>
<ul>
- <li class='jac'>{@link
oaj.marshaller.CharMarshaller}
+ <li class='jac'>
+ {@link oaj.marshaller.CharMarshaller}
<ul>
- <li
class='jm'><c>String</c> {@link
oaj.marshaller.CharMarshaller#write(Object) write(Object)}
- <ul class='javatreec'>
- <li class='jc'>{@link
oaj.marshaller.Csv}</li>
- <li class='jc'>{@link
oaj.marshaller.Html}</li>
- <li class='jc'>{@link
oaj.marshaller.Json}</li>
- <li class='jc'>{@link
oaj.marshaller.OpenApi}</li>
- <li class='jc'>{@link
oaj.marshaller.PlainText}</li>
- <li class='jc'>{@link
oaj.marshaller.Json5}</li>
- <li class='jc'>{@link
oaj.marshaller.Uon}</li>
- <li class='jc'>{@link
oaj.marshaller.UrlEncoding}</li>
- <li class='jc'>{@link
oaj.marshaller.Xml}</li>
- </ul>
+ <li class='jm'>
+
<c>String</c> {@link oaj.marshaller.CharMarshaller#write(Object)
write(Object)}
+ <ul class='javatreec'>
+ <li
class='jc'>{@link oaj.marshaller.Csv}</li>
+ <li
class='jc'>{@link oaj.marshaller.Html}</li>
+ <li
class='jc'>{@link oaj.marshaller.Json}</li>
+ <li
class='jc'>{@link oaj.marshaller.OpenApi}</li>
+ <li
class='jc'>{@link oaj.marshaller.PlainText}</li>
+ <li
class='jc'>{@link oaj.marshaller.Json5}</li>
+ <li
class='jc'>{@link oaj.marshaller.Uon}</li>
+ <li
class='jc'>{@link oaj.marshaller.UrlEncoding}</li>
+ <li
class='jc'>{@link oaj.marshaller.Xml}</li>
+ </ul>
+ </li>
</ul>
- <li class='jac'>{@link
oaj.marshaller.StreamMarshaller}
+ </li>
+ <li class='jac'>
+ {@link oaj.marshaller.StreamMarshaller}
<ul>
- <li
class='jm'><c><jk>byte</jk>[]</c> {@link
oaj.marshaller.StreamMarshaller#write(Object) write(Object)}
- <ul class='javatreec'>
- <li class='jc'>{@link
oaj.marshaller.MsgPack}</li>
- </ul>
+ <li class='jm'>
+
<c><jk>byte</jk>[]</c> {@link
oaj.marshaller.StreamMarshaller#write(Object) write(Object)}
+ <ul class='javatreec'>
+ <li
class='jc'>{@link oaj.marshaller.MsgPack}</li>
+ </ul>
+ </li>
</ul>
- </ul>
+ </li>
</ul>
</li>
</ul>
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.07.md
b/juneau-docs-poc/docs/release-notes/5.0.0.07.md
index 4aa6d257d..30cf2acb2 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.07.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.07.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.7"
**Date:** Jan 20, 2013
Juno 5.0.0.7 is a major update.
-###### Core API updates
+#### Core API updates
- Combined previous 3 libraries into a single library.
@@ -61,12 +61,12 @@ Automatic support for \{@link java.net.URL\} and \{@link
java.net.URI\} objects.
Improvements to Javadocs.
Improved ~~PojoQuery~~ support.
-###### REST client updates
+#### REST client updates
- GZIP compression support.
- Bug fixes.
-###### REST server updates
+#### REST server updates
Support for overriding bean context and serializer properties in a REST method
call through new ~~RestResponse.setProperty(String,Object)~~method.
For example, allows you to control whitespace options on a per-request basis.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.09.md
b/juneau-docs-poc/docs/release-notes/5.0.0.09.md
index fc4a594be..0c8d0c491 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.09.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.09.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.9"
**Date:** Feb 26, 2013
Juno 5.0.0.9 is a moderate update.
-###### Core API changes
+#### Core API changes
\{@link oaj.config INI config file support\}:
- A convenient API for reading, writing, and manipulating INI files.
@@ -18,7 +18,7 @@ Juno 5.0.0.9 is a moderate update.
- Ability to use \{@link oaj.annotation.Bean @Bean\} annotation to override
bean identification settings.
- New ~~ObjectMap.cast(Class)~~method to convert `ObjectMaps` directly to
beans.
-###### REST server API changes
+#### REST server API changes
- Build-in default `OPTIONS` pages.
- New [email protected]~~and
[email protected]~~annotations.
@@ -30,6 +30,6 @@ Juno 5.0.0.9 is a moderate update.
- New ~~@HasParam~~annotation.
- Full RFC2616 support for matching `Accept` headers to serializers.
-###### Other notes
+#### Other notes
- Smaller library size (460kB).
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.10.md
b/juneau-docs-poc/docs/release-notes/5.0.0.10.md
index 72a002e9c..811debdbc 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.10.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.10.md
@@ -7,12 +7,12 @@ title: "Release 5.0.0.10"
**Date:** Mar 7, 2013
Juno 5.0.0.10 is a minor update.
-###### Core API changes
+#### Core API changes
New ~~ObjectMap.findKeyIgnoreCase(String)~~method.
- HtmlSerializer will now create 2-dimensional tables for collections of mixed
beans/maps if all object have the same set of property names/keys.
-###### REST server API changes
+#### REST server API changes
- New `RestServletProperties` class that defines all the class-level
properties that can be set on the servlet.
- Properties can be set through [email protected]~~annotation, or new
~~RestServlet.setProperty(String,Object)~~method.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.11.md
b/juneau-docs-poc/docs/release-notes/5.0.0.11.md
index af974e4cc..d31a6ac2a 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.11.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.11.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.11"
**Date:** Mar 8, 2013
Juno 5.0.0.11 is a moderate update.
-###### REST server API changes
+#### REST server API changes
New `UrlEncodingRestSerializer` and `UrlEncodingRestParser` classes.
Allows parsing form posts directly to POJOs.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.12.md
b/juneau-docs-poc/docs/release-notes/5.0.0.12.md
index 15e303ed0..3e499c23b 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.12.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.12.md
@@ -7,12 +7,12 @@ title: "Release 5.0.0.12"
**Date:** Mar 10, 2013
Juno 5.0.0.12 is a minor update.
-###### Core API changes
+#### Core API changes
Relaxed method naming conventions when using ~~@BeanProperty~~ annotation.
Methods with zero parameters are interpreted as getters, and methods with one
parameter are interpreted as setters.
Eliminated the `BeanProperty.method` annotation, since it's now unnecessary.
-###### REST server API changes
+#### REST server API changes
Significantly improved response error messages.
Older messages were rather cryptic. Error conditions should be much easier
to debug now.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.13.md
b/juneau-docs-poc/docs/release-notes/5.0.0.13.md
index 0eaae4593..fb7cb5bbe 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.13.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.13.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.13"
**Date:** Mar 14, 2013
Juno 5.0.0.13 is a minor update.
-###### Core API changes
+#### Core API changes
New support for relative URIs.
- URIs of the form "foo/bar" are interpreted as relative to the context root
of the web application.
@@ -18,7 +18,7 @@ New ~~URI @URI~~ annotation that allows you to specify
classes and bean properti
New ~~HtmlSerializer.HTML_uriAnchorText~~HTML serializer property for
tailoring how anchor text is rendered.
Renamed `BeanProperty#uri` annotation to `BeanProperty#beanUri` to make it
clear that this property represents the URI of the bean itself instead of an
arbitrary property containing a URI.
Removed `BeanProperty#id` annotation.
-###### REST server API changes
+#### REST server API changes
Improvements to ~~RestServlet~~ to automatically handle relative URIs in POJOs.
- `SerializerContext.SERIALIZER_uriContext` property set by default to web app
context root.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.14.md
b/juneau-docs-poc/docs/release-notes/5.0.0.14.md
index afa54bde6..e22db2552 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.14.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.14.md
@@ -10,7 +10,7 @@ Juno 5.0.0.14 is a major update.
The biggest change is that the `RestSerializer`, `RestParser`,
`RestSerializerGroup`, and `RestParserGroup` classes have been eliminated
entirely.
Instead, the existing \{@link oaj.serializer.Serializer\}, \{@link
oaj.parser.Parser\}, ~~SerializerGroup~~, and ~~ParserGroup~~ classes of the
core API have been augmented to replace them.
Adoptions will be required if you have previously used these classes.
-###### Core API changes
+#### Core API changes
New `org.apache.juneau.serializer` package.
- Entirely reworked class hierarchy to make it easier to define new
serializers.
@@ -50,12 +50,12 @@ Improved cloning support on the \{@link oaj.BeanContext\}
class.
`JsonMap` and `JsonList` changed to ~~ObjectMap~~ and ~~ObjectList~~ to better
reflect that they're not limited to just JSON support.
Renamed `PojoSwap` to ~~PojoQuery~~ to not confuse it with the new Filter API.
-###### REST server API changes
+#### REST server API changes
Eliminated `org.apache.juneau.rest.serializers` and
`org.apache.juneau.rest.parsers` packages.
- All existing REST serializers and parsers merged into the core API.
-###### REST client API changes
+#### REST client API changes
Simplified \{@link oajrc.RestClient\} API.
- You can now only specify a single serializer or parser per client. This
significantly simplifies the code.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.18.md
b/juneau-docs-poc/docs/release-notes/5.0.0.18.md
index 6846847eb..9ac79cd83 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.18.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.18.md
@@ -13,6 +13,6 @@ There are plans of adding an equivalent `RdfParser` class in
the future, so the
The `RdfXmlSerializer` class should be considered deprecated for now.
However, I'm keeping it around, since it's considerably faster and uses far
less memory than the Jena-based serializer since it serializes directly from
POJOs to RDF/XML.
It may or may not be removed in the future depending on demand.
-###### Other changes
+#### Other changes
New ~~JsoParser~~ class.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.20.md
b/juneau-docs-poc/docs/release-notes/5.0.0.20.md
index 5384adf43..98b484229 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.20.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.20.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.20"
**Date:** Apr 7, 2013
Juno 5.0.0.20 is a major update.
-###### Core API changes
+#### Core API changes
New Jena-based ~~RdfSerializer~~ for serializing POJOs to RDF/XML,
RDF/XML-ABBREV, N-Triple, Turtle, and N3.
Serializes ANY POJOs to RDF, even simple objects and primitives.
@@ -16,7 +16,7 @@ New Jena-based ~~RdfParser~~ for parsing RDF/XML,
RDF/XML-ABBREV, N3, Turtle, an
The old default value would cause XML with unmapped namespaces if you didn't
manually specify them via the ~~XmlSerializerContext.XML_namespaces~~
annotation.
While setting the default to true is somewhat slower (since the serializer
must crawl the POJO tree to find namespaces), the benefits of having it work
out-of-the-box outweighs the performance concerns.
For developers concerned about performance, they can always change it back to
false and specify the namespaces themselves.
-###### REST server API changes
+#### REST server API changes
Allow inheritance of ~~@RestResource~~ annotation.
Serializers, parsers, filters, properties , guards, and converters definitions
are automatically inherited from parent classes and interfaces.
@@ -34,6 +34,6 @@ New methods on ~~RestServlet~~:
- `RestServlet.createParsers()`
These augment the existing `getBeanContext()` / `getSerializers()` /
`getParsers()` methods.
-###### REST client API changes
+#### REST client API changes
New `RestCall.setDateHeader(String,Object)` method for setting ISO8601
datetime headers.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.21.md
b/juneau-docs-poc/docs/release-notes/5.0.0.21.md
index 3c7956db1..bcbfc41b9 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.21.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.21.md
@@ -7,11 +7,11 @@ title: "Release 5.0.0.21"
**Date:** Apr 9, 2013
Juno 5.0.0.21 is a minor update.
-###### Core API changes
+#### Core API changes
New ~~HtmlDocSerializerContext.HTMLDOC_navlinks~~ annotation for addint links
to HTML page views.
Renamed the properties in ~~HtmlDocSerializerContext~~ for clarity.
-###### Servlet API changes
+#### Servlet API changes
Added new `RestServlet.addDefaultProperties(ObjectMap,RestRequest)` method for
programatically adding properties to the property map per request.
Added the following new properties in the properties map to make them easily
available to serializers and parsers (since they don't have access to the HTTP
request object).
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.22.md
b/juneau-docs-poc/docs/release-notes/5.0.0.22.md
index 4b54dbabb..c655bdb3e 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.22.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.22.md
@@ -7,11 +7,11 @@ title: "Release 5.0.0.22"
**Date:** Apr 12, 2013
Juno 5.0.0.22 is a minor update.
-###### Core API changes
+#### Core API changes
New `@Property.nls()` annotation for specifying localized property values.
For example, allows you to set the HTMLDOC_title and HTMLDOC_description
properties to localized values pulled from a resource bundle.
See the `AddressBookResource` class for an example.
-###### REST Servlet API changes
+#### REST Servlet API changes
- Fix a bug where the `&Content` query parameter was not always parsed
correctly.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.24.md
b/juneau-docs-poc/docs/release-notes/5.0.0.24.md
index c81079049..86b796b04 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.24.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.24.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.24"
**Date:** May 9, 2013
Juno 5.0.0.24 is a major update.
-###### Core API updates
+#### Core API updates
New support for \{@link oaj.dto.atom ATOM\}.
New `AtomFeedResource` class added to sample war.
@@ -22,7 +22,7 @@ Fixed timezone bug in ~~CalendarSwap~~.
Simplified `Serializer.serialize(Object,Object,SerializerContext)` method.
Fixed bug where lists returned by ~~ObjectMap.getObjectList(String)~~were not
updatable.
Eliminated old RDF/XML serializer.
-###### Documentation updates
+#### Documentation updates
- New \{@link oaj.json JSON Support Overview\} document.
- New \{@link oaj.xml XML Support Overview\} document.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.25.md
b/juneau-docs-poc/docs/release-notes/5.0.0.25.md
index 6f134b993..24b2e344b 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.25.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.25.md
@@ -7,11 +7,11 @@ title: "Release 5.0.0.25"
**Date:** May 11, 2013
Juno 5.0.0.25 is a minor update.
-###### Core API updates
+#### Core API updates
New \{@link oaj.dto.ResultSetList\} DTO for serializing SQL result sets to
JSON/XML/HTML and so forth.
New `SqlQueryResource` class in the sample war for demonstrating the
`ResultSetList` DTO.
-###### Server API updates
+#### Server API updates
Fixed issue with media type for CSS files being reported as "text/plain"
instead of "text/css".
Moved initialization of class properties to before the call to
`Servlet.init()` so that `getProperties()` can be called during servlet
initialization.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.00.md
b/juneau-docs-poc/docs/release-notes/5.1.0.00.md
index 1f5c43385..fb2bee765 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.00.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.00.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.0"
**Date:** Jan 18, 2014
Juno 5.1.0.0 is a major update.
-###### Major changes
+#### Major changes
Brand new REST client API that uses Apache HttpClient for HTTP communication.
The new client API is simply a thin layer on top of `HttpClient` that performs
@@ -30,7 +30,7 @@ However, it could interfere with garbage collection of the
original string objec
Instead, the existing \{@link oaj.parser.ParserReader\} was enhanced to work
well with `String` input, and tests show no significant performance
differences.
New `org.apache.juneau.parser.Parser.parse(Object,int,ClassMeta)` convenience
method added.
-###### Other changes
+#### Other changes
Various new methods added to ~~StringUtils~~ and ~~ClassUtils~~.
Improved support on ~~BeanContext.getClassMetaFromString(String)~~.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.03.md
b/juneau-docs-poc/docs/release-notes/5.1.0.03.md
index 5d4f28cb4..1cfcd0acc 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.03.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.03.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.3"
**Date:** Jun 28, 2014
Juno 5.1.0.3 is a moderate update.
-###### Core API updates
+#### Core API updates
Ability to detect and use non-public bean classes, getters/setters, and fields
using the following new properties:
~~BeanContext.BEAN_beanConstructorVisibility~~- Control which bean
constructors are visible to Juno.
@@ -35,7 +35,7 @@ The previous behavior was not strictly JSON-compliant since
JSON objects are sup
While targeted for JSON, the restriction is also lifted for all other parsers.
New fluent-style \{@link oaj.BeanMap#load(String) BeanMap.load()\} methods for
initializing bean maps.
\{@link oaj.html.HtmlDocSerializer\} will now embed the data portion of the
output in a ` id='data'>` element to make it easier to extract the data portion
of the page in Javascript in browsers.
-###### REST Server API updates
+#### REST Server API updates
New ~~RestRequest.getJavaMethod()~~method for getting access to the method
used to handle a request.
Useful for accessing the method name or annotations during requests, such as
in calls to ~~RestGuard.guard(RestRequest,RestResponse)~~.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.10.md
b/juneau-docs-poc/docs/release-notes/5.1.0.10.md
index d31df7fb2..e1655312c 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.10.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.10.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.10"
**Date:** Dec 23, 2014
Juno 5.1.0.10 is a moderate update.
-###### Core
+#### Core
Major changes to URL-Encoded serializer and parser.
Logic for serializing and parsing URL-Encoded key-value pairs moved to \{@link
oaj.urlencoding.UrlEncodingSerializer\} and \{@link
oaj.urlencoding.UrlEncodingParser\} classes.
@@ -19,7 +19,7 @@ Fixed bug in ~~BeanContext.addTransforms(Class[])~~that would
cause filter order
Fixed indentation bugs in \{@link oaj.html.HtmlSerializer\}.
Fixed issue in \{@link oaj.html.HtmlSerializer\} where newlines were not being
converted into line breaks.
New \{@link oaj.serializer.WriterSerializer#toString(Object)\} method that's
identical to the serialize method but throws `RuntimeExceptions` to make the
serializer easier to use for debugging.
-###### Server
+#### Server
Fixed major issue that prevented parsing URL-Encoded form posts into POJOs.
Calling ~~HttpServlet.getParameter(String)~~was forcing the underlying servlet
code to process the HTTP body itself, preventing the `UrlEncodingSerializer`
@@ -32,7 +32,7 @@ Removed properties parameters from
~~RestServlet.onPreCall(RestRequest)~~and ~~R
since the properties are already accessible through
`RestRequest.getProperties()`.
Added \{@link oaj.uon.UonSerializer\} and \{@link oaj.uon.UonParser\} to
serializer and parser lists on
~~BasicRestServlet~~and ~~RestServletJenaDefault~~.
-###### Client
+#### Client
Moved to Apache HttpClient 4.3 to match Jazz 6.0.
Renamed `RestResponseEntity` to ~~RestRequestEntity~~.
@@ -44,7 +44,7 @@ New methods on \{@link oajrc.RestClient\} class that makes it
easier to associat
~~RestClient.addTransforms(Class[])~~
~~RestClient.addImplClass(Class,Class)~~
Renamed `RestClient.shutdown()` to \{@link oajrc.RestClient#close()\} to
mirror change in Apache API.
-###### Samples
+#### Samples
New `CodeFormatterResource` for quickly formatting Java and XML code samples
in Javadocs.
New `UrlEncodedFormResource` for showing how to work with URL-Encoded form
posts.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.11.md
b/juneau-docs-poc/docs/release-notes/5.1.0.11.md
index 21d041dab..fa43a0be7 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.11.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.11.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.11"
**Date:** Feb 14, 2015
Juno 5.1.0.11 is a moderate update.
-###### Core
+#### Core
Additions to \{@link oaj.html.annotation.Html @Html\} bean annotation.
New \{@link oaj.html.annotation.Html#noTables() @Html(noTables)\} annotation
that prevents
@@ -28,7 +28,7 @@ Performance improvements when using the \{@link
oaj.BeanMap#add(String,Object)\}
Array properties are stored in a temporary list cache until \{@link
oaj.BeanMap#getBean()\} is called.
New ~~BeanPropertyMeta.add(BeanMap,Object)~~ method for adding values to
Collection and array properties.
Config INI files now support keys with name "*".
-###### Server
+#### Server
REST method parameters can now be generic types (e.g. @Param("foo") Map foo).
This applies to headers, attributes, and parameters.
@@ -51,7 +51,7 @@ the `Content-Type` through this method was inconsistent with
the behavior in WAS
Workaround for Jetty issue where `ServletContext.getContextPath()` always ends
with "null".
`RestServletProperties.REST_allowMethodParam` is now true by default on all
subclasses
of ~~BasicRestServlet~~ and ~~RestServletJenaDefault~~.
-###### Client
+#### Client
New method ~~RestCall.allowRedirectsOnPosts(boolean)~~.
New method `RestCall.peekInputStream()` allows you to read response bodies
without interrupting execution flow.
@@ -61,7 +61,7 @@ Shows all request/response headers and bodies.
New method `RestClient.addListener(RestClientListener)` for registering
request/response listeners.
New ~~RestClient.setClassLoader(ClassLoader)~~method.
TLS support in `JazzRestClient`.
-###### Other changes
+#### Other changes
`samples.ear` and `samples.war` projects
have been replaced with an OSGi bundle with activated servlets in
`juno.samples`.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.12.md
b/juneau-docs-poc/docs/release-notes/5.1.0.12.md
index 802a32af8..95a8c06da 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.12.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.12.md
@@ -7,12 +7,12 @@ title: "Release 5.1.0.12"
**Date:** Mar 28, 2015
Juno 5.1.0.12 is a minor update.
-###### Core
+#### Core
Fixed ~~ConfigFile.isEmpty()~~method.
Changed behavior on \{@link oaj.uon.UonParser\} to not treat '~' characters as
escapes
unless followed by one of the following characters: `( ) , $ = ~`.
-###### Client
+#### Client
New class ~~RestCallInterceptor~~.
Allows responses to be inspected and modified before being processed.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.13.md
b/juneau-docs-poc/docs/release-notes/5.1.0.13.md
index 708bb1d7d..052967019 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.13.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.13.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.13"
**Date:** Apr 24, 2015
Juno 5.1.0.13 is a minor update.
-###### Core
+#### Core
\{@link oaj.ClassMeta#newInstance()\} method can now create new instances of
arrays.
Arguments passed to ~~Link~~ are now serialized using \{@link
oaj.urlencoding.UrlEncodingSerializer\}, so arbitrary POJOs can now be passed
as arguments.
@@ -17,14 +17,14 @@ Adds "* \{white-space:nowrap\}" to the style header to
prevent word wrapping.
Fixed bug in \{@link oaj.uon.UonParser\} where passing in a blank value on an
array or collection type in a form post would cause a `ClassCastException`.
New behavior creates an empty array or `Collection`.
Improved implementation of ~~UrlEncodingSerializer.serializeUrlPart(Object)~~
method.
-###### Server
+#### Server
~~RestConverter~~ API fixed to handle the existence of POJO filters.
~~Introspectable~~/~~Queryable~~/~~Traversable~~ classes can now work with
filtered POJOs.
~~@RestResource(messages)~~annotation can now be defined on super and
subclasses so that NLS messages can be defined in multiple resource bundles.
Performance improvements in `RestServletNls` class.
Fixed bug where two REST java methods mapped to the same path pattern wasn't
triggering an exception when it was supposed to.
-###### Client
+#### Client
New ~~RestCall.setRedirectMaxAttempts(int)~~method to prevent endless
redirection loops.
New ~~RestCall.setRetryable(int,long,RetryOn)~~method to automatically retry
on failed connection attempts.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.14.md
b/juneau-docs-poc/docs/release-notes/5.1.0.14.md
index 03ca4e388..8315fdc61 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.14.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.14.md
@@ -9,16 +9,16 @@ title: "Release 5.1.0.14"
Juno 5.1.0.14 is a moderate update.
The major addition is support for Remoteable Services, the ability
to invoke server-side POJO methods through client-side proxy interfaces.
-###### Core
+#### Core
Simplified ~~PojoIntrospector~~ class.
New ~~ClassUtils.getMethodSignature(Method)~~method.
-###### Client
+#### Client
New methods in \{@link oajrc.RestClient\} for working with remoteable services:
~~RestClient.setRemoteableServletUri(String)~~
~~RestClient.getRemoteableProxy(Class)~~
-###### Server
+#### Server
Added a default OPTIONS page to ~~BasicRestServlet~~and
~~RestServletJenaDefault~~.
`RestServletProperties.REST_allowMethodParam` has been enhanced to allow you to
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.15.md
b/juneau-docs-poc/docs/release-notes/5.1.0.15.md
index 88d8ee697..e4e348939 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.15.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.15.md
@@ -7,21 +7,21 @@ title: "Release 5.1.0.15"
**Date:** May 24, 2015
Juno 5.1.0.15 is a minor update.
-###### Core
+#### Core
New properties in ~~SerializerContext~~:
~~SerializerContext.SERIALIZER_relativeUriBase~~
~~SerializerContext.SERIALIZER_absolutePathUriBase~~
These replace the `SERIALIZER_uriAuthority` and `SERIALIZER_uriContext`
properties.
Improvements in \{@link oaj.csv.CsvSerializer\}.
-###### Server
+#### Server
New properties in `RestServletProperties`:
`REST_defaultCharset`
`REST_servletURI`
`REST_relativeServletURI`
Improvements involving path calculations when servlets deployed outside of a
war file with a context root.
-###### Client
+#### Client
New methods in ~~RestCall~~:
~~RestRequest.getHeader(String,Class)~~
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.16.md
b/juneau-docs-poc/docs/release-notes/5.1.0.16.md
index 16b9c9a83..ba101c25d 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.16.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.16.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.16"
**Date:** June 28, 2015
Juno 5.1.0.16 is a moderate update.
-###### Core
+#### Core
New methods on \{@link oaj.ClassMeta\} that eliminates language-specific code
in
the general class metadata.
@@ -28,11 +28,11 @@ Fixed warning message about "tab" setting when using the
N3/Turtle serializers.
New ~~SerializerContext.SERIALIZER_sortCollections~~and
~~SerializerContext.SERIALIZER_sortMaps~~properties.
FindBug fixes.
-###### Server
+#### Server
New ~~RestRequest.getServletParentURI()~~method.
New `$R\{servletParentURI\}` variable.
Removed final modifier from ~~ChildResourceDescriptions~~.
-###### Samples
+#### Samples
Added source code links to examples.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.17.md
b/juneau-docs-poc/docs/release-notes/5.1.0.17.md
index 186abbb96..7e68e4583 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.17.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.17.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.17"
**Date:** Aug 3, 2015
Juno 5.1.0.17 is a major update.
-###### Core
+#### Core
\{@link oaj.BeanMap#get(Object)\} and \{@link oaj.BeanMap#put(String,Object)\}
now
automatically performs filtering if filters are defined on the bean property
or bean property class.
@@ -31,7 +31,7 @@ New ~~ZipFileList~~class for providing efficiently zipped
directories through th
New `RdfProperties.RDF_useXmlNamespaces` property.
New ~~XmlParserContext.XML_preserveRootElement~~ property.
Worked around bug in Sun VM on OS/X where XML parser was throwing an exception
when trying to set a reporter.
-###### Server
+#### Server
New ~~ZipFileListResponseHandler~~class.
Simplified labels in servlet resource bundles:
@@ -96,6 +96,6 @@ want to provide labels in resource bundles.
~~Param.description()~~
~~QParam.description()~~
Support for sorting resources by name in ~~ChildResourceDescriptions~~.
-###### Samples
+#### Samples
Added `/tempDir/upload` showing how to use `ServletFileUpload` with multipart
form posts.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.18.md
b/juneau-docs-poc/docs/release-notes/5.1.0.18.md
index f02d284ec..d5c276db7 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.18.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.18.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.18"
**Date:** Aug 5, 2015
Juno 5.1.0.18 is a minor update affecting the server component only.
-###### Server
+#### Server
Fixed bug where localized strings weren't resolving when using chained
resource bundles.
Servlet and method labels and descriptions can now contain embedded string
variables.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.19.md
b/juneau-docs-poc/docs/release-notes/5.1.0.19.md
index 2b745700b..f122fd65e 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.19.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.19.md
@@ -8,7 +8,7 @@ title: "Release 5.1.0.19"
Juno 5.1.0.19 is a minor update in terms of core functionality.
But it introduces a ~~Microservices~~ project for building REST microservices
and docker containers.
-###### Core
+#### Core
Beans can now be serialized to and parsed from ~~ObjectMap ObjectMaps~~.
See Serializing to ObjectMaps for details.
@@ -16,10 +16,10 @@ New ~~ObjectMap.include(String[])~~and
~~ObjectMap.exclude(String[])~~methods.
\{@link oaj.html.annotation.Html @Html\} annotations can now be applied to
bean properties.
New ~~IOPipe~~ utility class.
Behavior change on ~~StringVarResolver~~. null input now results in blank
strings instead of null.
-###### Client
+#### Client
New ~~RestClient.doCallback(String)~~method.
-###### Server
+#### Server
New \{@link oajr.RestRequest#getHeaders()\} method.
New `RestResponse.getUnbufferedWriter()` method.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.20.md
b/juneau-docs-poc/docs/release-notes/5.1.0.20.md
index 2547a05db..ed528dda3 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.20.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.20.md
@@ -8,7 +8,7 @@ title: "Release 5.1.0.20"
Juno 5.1.0.20 is a moderate update.
The biggest improvement is the ability to associate external INI config files
with REST servlets using the ~~ConfigFile~~ functionality.
-###### Core
+#### Core
Significant API changes to `org.apache.juneau.config` API.
~~ConfigFile~~ is now thread safe and can be shared across multiple threads.
@@ -32,7 +32,7 @@ Various internal improvements to ~~IOPipe~~.
New ~~ReflectionUtils.getResource(Class,String)~~method.
~~StringUtils.parseNumber(String,Class)~~ now returns zero for empty strings.
This affects the way most parsers handle blank values.
-###### Server
+#### Server
You can now parse into non-static inner classes of a servlet for
parameters/attributes/content.
Useful if you like to define your marshaller beans inside your servlet.
@@ -68,7 +68,7 @@ New ~~@RestResource(config)~~ annotation for associating
external ~~ConfigFile~~
New `org.apache.juneau.rest.matcher` package for commonly-used
~~RestMatchers~~:
~~MultipartFormDataMatcher~~
~~UrlEncodedFormMatcher~~
-###### Microservice
+#### Microservice
New juneau-microservice.jar file that encapsulates all 3 juneau jars with code
necessary for creating fast and efficent jetty-powered REST microservices.
Contains the following:
diff --git a/juneau-docs-poc/docs/release-notes/5.2.0.0.md
b/juneau-docs-poc/docs/release-notes/5.2.0.0.md
index ae200ba9c..9d08153b4 100644
--- a/juneau-docs-poc/docs/release-notes/5.2.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/5.2.0.0.md
@@ -8,7 +8,7 @@ title: "Release 5.2.0.0"
Juno 5.2.0.0 is a major update.
Major changes have been made to the microservice architecture and config INI
file APIs.
-###### Core
+#### Core
Significant changes and enhancements to the `org.apache.juneau.config` API.
More consistent handling of comma-delimited lists of objects.
@@ -161,7 +161,7 @@ Renamed ~~CharSet~~ to ~~AsciiSet~~.
so that resources that include Jena support can continue to operate even if
the Jena libraries are not present.
New \{@link oaj.internal.FileUtils#createTempFile(String)\} method.
New ~~PojoQuery~~ modified to handle bean getters that throw exceptions.
-###### Client
+#### Client
Upgraded to use Apache HttpClient 4.5.
New classes:
@@ -259,7 +259,7 @@ These classes are now deprecated and will be removed in a
future release:
`org.apache.juneau.rest.client.jazz.LenientCertificateValidator`
`org.apache.juneau.rest.client.jazz.SharedTrustStoreProvider`
`org.apache.juneau.rest.client.jazz.ValidatingX509TrustManager`
-###### Server
+#### Server
New ~~ReaderResource~~ class.
Represents the contents of a text file with convenience methods for resolving
@@ -307,7 +307,7 @@ New DevOps stylesheet.
Servlet initialization and HTTP requests are now logged at FINE level.
Added abstract modifier on various RestServlet subclasses to indicate that
they're meant to be subclassed.
New ~~RestUtils.trimPathInfo(StringBuffer,String,String)~~ method.
-###### Microservice
+#### Microservice
Completely revamped API.
New \{@link oaj.microservice.Microservice\} class that serves as a generic
@@ -336,11 +336,11 @@ New predefined reusable resources:
\{@link oaj.microservice.resources.LogsResource\} - REST resource for viewing
log files.
\{@link oaj.microservice.resources.SampleRootResource\} - Sample REST resource
that contains the config and logs resource as children.
\{@link oaj.microservice.resources.ShutdownResource\} - REST resource for
stopping the microservice JVM. Useful for testing purposes.
-###### Samples
+#### Samples
Converted to a REST microservice.
Look-and-feel changed to IBM DevOps.
-###### Documentation Updates
+#### Documentation Updates
~~microservice~~ - New package-level javadoc.
~~config~~ - New package-level javadoc.
diff --git a/juneau-docs-poc/docs/release-notes/5.2.0.1.md
b/juneau-docs-poc/docs/release-notes/5.2.0.1.md
index 25d83f12f..620b92909 100644
--- a/juneau-docs-poc/docs/release-notes/5.2.0.1.md
+++ b/juneau-docs-poc/docs/release-notes/5.2.0.1.md
@@ -7,7 +7,7 @@ title: "Release 5.2.0.1"
**Date:** Mar 23, 2016
Juno 5.2.0.1 is a moderate update.
-###### com.ibm.team.juno
+#### com.ibm.team.juno
Improved support for multi-line values in config files.
Any line that begins with whitespace is interpreted as a continuation of the
previous line.
@@ -36,11 +36,11 @@ New ~~StringMapVar~~ class.
New ~~StringVars~~ class with reusable common ~~StringVar~~ instances.
New ~~JuneauLogger~~class.
Default value for ~~XmlParserContext.XML_trimWhitespace~~changed to true.
-###### Server
+#### Server
New methods on \{@link oajr.RestContext\}:
\{@link oajr.RestContext#getMessages()\}
-###### Client
+#### Client
Fixed potential issue in \{@link oajrc.RestClient\} where the HTTP connection
pool could end up exhausted if an error occurred.
Improved thread safety on \{@link oajrc.RestClient\}.
diff --git a/juneau-docs-poc/docs/release-notes/6.0.0.md
b/juneau-docs-poc/docs/release-notes/6.0.0.md
index 87ee877af..a39c29341 100644
--- a/juneau-docs-poc/docs/release-notes/6.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.0.0.md
@@ -8,7 +8,7 @@ title: "Release 6.0.0"
Juneau 6.0.0 is a major update.
The major change is rebranding from "Juno" to "Juneau" in preparation for
donation to the Apache Foundation.
-###### org.apache.juneau
+#### org.apache.juneau
Major changes around how serializer and parser class properties are defined to
improve performance
and concurrency.
@@ -76,7 +76,7 @@ Introduced new classes to eliminate the references to
language-specific metadata
~~BeanPropertyMetaExtended~~/ ~~BeanPropertyMeta.getExtendedMeta(Class)~~
Renamed `@Transform` annotation to ~~@Pojo~~ so that it can be used for
various POJO-related behavior, not just associating transforms.
Introduced \{@link oaj.dto.swagger Swagger DTOs\}.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
OPTIONS pages replaced with Swagger documents.
Lots of changes related to supporting Swagger.
@@ -117,7 +117,7 @@ New/updated methods on ~~RestServlet~~:
New client-version annotations:
~~RestResource.clientVersionHeader~~ - The name of the header used to identify
the client version.
~~RestMethod.clientVersion~~ - The client version range applied to a Java
method.
-###### org.apache.juneau.rest.client
+#### org.apache.juneau.rest.client
Removed the `JazzRestClient` class.
New method ~~RestClient.setClientVersion(String)~~.
diff --git a/juneau-docs-poc/docs/release-notes/6.0.1.md
b/juneau-docs-poc/docs/release-notes/6.0.1.md
index d5b77eab2..88f5da390 100644
--- a/juneau-docs-poc/docs/release-notes/6.0.1.md
+++ b/juneau-docs-poc/docs/release-notes/6.0.1.md
@@ -7,7 +7,7 @@ title: "Release 6.0.1"
**Date:** Jan 3, 2017
Juneau 6.0.1 is a minor update.
-###### org.apache.juneau
+#### org.apache.juneau
General improvements to JSON parser.
Several fixes to handle obscure edge cases.
diff --git a/juneau-docs-poc/docs/release-notes/6.1.0.md
b/juneau-docs-poc/docs/release-notes/6.1.0.md
index 6cfae3e70..d373f4371 100644
--- a/juneau-docs-poc/docs/release-notes/6.1.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.1.0.md
@@ -11,7 +11,7 @@ In particular, this release cleans up the \{@link
oaj.BeanContext\} API to match
the ~~PropertyStore~~/\{@link oaj.Context\}/~~Session~~ paradigm
previously used in the serializer and parser APIs.
It also makes several improvements to the HTML and XML serialization support
and introduces HTML5 DTO beans.
-###### org.apache.juneau
+#### org.apache.juneau
Improvements to XML serialization support.
New supported XML formats:
@@ -175,7 +175,7 @@ This has the added benefit of simplifying the overall code.
The ~~SerializerContext.SERIALIZER_addBeanTypeProperties~~setting is now
enabled by default.
Combined the
`SERIALIZER_addIndentation`/`JSON_addWhitespace`/`UON_addWhitespace`
properties into a single ~~SerializerContext.SERIALIZER_useWhitespace~~setting.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
\{@link oajr.RestRequest\} now passes locale and timezone to
serializers/parsers/transforms.
~~RestRequest.getTimeZone()~~method.
diff --git a/juneau-docs-poc/docs/release-notes/6.2.0.md
b/juneau-docs-poc/docs/release-notes/6.2.0.md
index d160bccb0..35c9b1708 100644
--- a/juneau-docs-poc/docs/release-notes/6.2.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.2.0.md
@@ -7,7 +7,7 @@ title: "Release 6.2.0"
**Date:** Apr 28, 2017
Juneau 6.2.0 is a major update.
-###### org.apache.juneau
+#### org.apache.juneau
Revamped the serializer, parser classes to use builders for creation.
Serializers and parsers are now unmodifiable objects once they are created.
@@ -77,7 +77,7 @@ New URL-encoding serializer setting:
~~UrlEncodingSerializerContext.URLENC_param
New methods on \{@link oaj.urlencoding.UrlEncodingSerializer.Builder\}:
~~Builder.paramFormat(String)~~
~~Builder.plainTextParams()~~
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
~~@RestResource~~ annotation can now be applied to
any class! You're no longer restricted to subclassing your resources from
~~RestServlet~~.
@@ -172,7 +172,7 @@ See ~~RestMethod.name() @RestMethod(name)~~for more
information.
\{@link oajr.RestRequest#toString()\} can be called at any time to view the
headers and content of the request
without affecting functionality. Very useful for debugging.
~~RestMethod.name() @RestMethod(name)~~annotation is now optional. Defaults
to "GET".
-###### org.apache.juneau.rest.client
+#### org.apache.juneau.rest.client
Revamped the client API to use builders.
New doc: 1.5 - Debugging
@@ -231,7 +231,7 @@ New methods added to ~~NameValuePairs~~:
~~append(String,Object,PartSerializer)~~
~~RetryOn~~is now an abstract class with an additional method:
~~RetryOn.onResponse(HttpResponse) onResponse(HttpResponse)~~
-###### org.apache.juneau.microservice
+#### org.apache.juneau.microservice
"REST/port" configuration setting can now be a comma-limited list of port
numbers to try.
You can also specify one or more `0`s to try a random port.
diff --git a/juneau-docs-poc/docs/release-notes/6.3.0.md
b/juneau-docs-poc/docs/release-notes/6.3.0.md
index b1ce4e1c4..d36fbc25a 100644
--- a/juneau-docs-poc/docs/release-notes/6.3.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.3.0.md
@@ -8,7 +8,7 @@ title: "Release 6.3.0"
Juneau 6.3.0 is a major update with significant new functionality for defining
proxy interfaces against
arbitrary 3rd-party REST interfaces.
-###### org.apache.juneau
+#### org.apache.juneau
New package: \{@link oaj.http\}.
Support for dynamic beans. See ~~@BeanProperty(name)~~.
@@ -144,7 +144,7 @@ New properties on \{@link oaj.BeanContext\}:
~~BEAN_includeProperties~~
~~BEAN_excludeProperties~~
New annotation property: ~~@BeanProperty(format)~~.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
MAJOR enhancements made to the REST API.
The \{@link oajr.RestRequest\} class functionality has been broken up into the
following
@@ -319,7 +319,7 @@ New annotation attributes:
\{@link oaj.http.annotation.Path#name() @Path(name)\}
\{@link oaj.http.annotation.HasQuery#name() @HasQuery(name)\}
\{@link oaj.http.annotation.HasFormData#name() @HasFormData(name)\}
-###### org.apache.juneau.rest.client
+#### org.apache.juneau.rest.client
New ~~Path~~ annotation for specifying path variables on remoteable interfaces.
New ~~@RequestBean~~ annotation for specifying beans with remoteable
annotations
@@ -329,8 +329,8 @@ when using "*" as the name.
~~FormData~~,~~FormDataIfNE~~,
~~Query~~,~~QueryIfNE~~,
~~Header~~,~~HeaderIfNE~~
-###### org.apache.juneau.microservice
-###### org.apache.juneau.examples.rest
+#### org.apache.juneau.microservice
+#### org.apache.juneau.examples.rest
Many code enhancements make to examples to reflect new functionality.
All pages now render aside comments to help explain what feature they're
trying to explain using the
diff --git a/juneau-docs-poc/docs/release-notes/6.3.1.md
b/juneau-docs-poc/docs/release-notes/6.3.1.md
index fb7ea2c76..4d905f066 100644
--- a/juneau-docs-poc/docs/release-notes/6.3.1.md
+++ b/juneau-docs-poc/docs/release-notes/6.3.1.md
@@ -7,7 +7,7 @@ title: "Release 6.3.1"
**Date:** Aug 1, 2017
Juneau 6.3.1 is a minor release.
-###### org.apache.juneau
+#### org.apache.juneau
~~PojoQuery~~ improvements.
New ~~RemoteMethod.returns()~~ annotation.
@@ -25,7 +25,7 @@ HTMLDOC_title, HTMLDOC_description, HTMLDOC_description
See below on changes to simplify HTML headers.
\{@link oaj.svl.Var\} implementations can now throw exceptions and will be
converted to
""\{exceptionMessage\}" values.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
New 'light' stylesheet:
Compared with previous 'devops':
@@ -148,7 +148,7 @@ has been replaced with the following:
~~RestMethod.bpi() bpi()~~- Now an array of simplified values instead of LAX
JSON.
~~RestMethod.bpx() bpx()~~- Now an array of simplified values instead of LAX
JSON.
Two new variables added to `$R` variable: "$R\{servletClass\}",
"$R\{servletClassSimple\}"
-###### org.apache.juneau.rest.examples
+#### org.apache.juneau.rest.examples
Added CONTENT-TYPE and STYLES menu items to most pages.
Added improved QUERY menu item to PetStore page.
diff --git a/juneau-docs-poc/docs/release-notes/6.4.0.md
b/juneau-docs-poc/docs/release-notes/6.4.0.md
index 49ad1a941..debe05c05 100644
--- a/juneau-docs-poc/docs/release-notes/6.4.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.4.0.md
@@ -89,7 +89,7 @@ juneau-rest-client
Java 6
Servlet 3.1
Apache HttpClient 4.5
-###### juneau-marshall
+#### juneau-marshall
Improvements to swap support.
New \{@link oaj.annotation.Swap @Swap\} annotation.
@@ -241,14 +241,14 @@ the `super()` method.
New class: ~~PojoMerge~~
New doc: 2.6.2 - @Pojo annotation
New doc: 2.6.5 - Serializing Readers and InputStreams
-###### juneau-dto
+#### juneau-dto
\{@link oaj.dto.html5.HtmlElementMixed#children(Object...)\} can now take in
collections
of objects.
The DTO beans can now be serialized to strings of their typical language by
calling the `toString()` method.
For example, `Swagger.toString()` produces JSON and the HTML5 `Form.toString()`
produces HTML.
-###### juneau-rest-server
+#### juneau-rest-server
Revamped and simplified servlet and REST-call lifecycle handling through new
~~@RestHook~~annotation.
@@ -319,7 +319,7 @@ Eliminated the `RestServletJenaDefault` class to remove the
Jena dependency clas
the `juneau-rest-server` artifact.
It's simple enough to simply extend `BasicRestServlet` and add the RDF
serializers and
parsers.
-###### juneau-microservice
+#### juneau-microservice
The microservice has been significantly modified to be configured via a
`jetty.xml` file
for maximum flexibility instead of the hodge-podge of support in the config
file.
@@ -339,6 +339,6 @@ New class ~~JettyLogger~~ for directing Jetty logging to the
java.util.logging framework.
New class ~~DebugResource~~for viewing and generating
Jetty thread dumps through REST calls.
-###### org.apache.juneau.rest.examples
+#### org.apache.juneau.rest.examples
New example of adding a menu-item widget to the Pet Store resource (including
tooltips):
diff --git a/juneau-docs-poc/docs/release-notes/7.0.0.md
b/juneau-docs-poc/docs/release-notes/7.0.0.md
index 73790393a..de99b24ba 100644
--- a/juneau-docs-poc/docs/release-notes/7.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/7.0.0.md
@@ -7,14 +7,14 @@ title: "Release 7.0.0"
**Date:** Oct 25, 2017
This release ups the Java prerequisite to Java 7.
-###### juneau-marshall
+#### juneau-marshall
New class ~~HttpMethodName~~ with valid static string HTTP method names.
-###### juneau-dto
+#### juneau-dto
Class `org.apache.juneau.dto.Link` renamed to \{@link oaj.dto.LinkString\}.
Helps avoid confusion since there are other Link classes in the library.
-###### juneau-rest-server
+#### juneau-rest-server
Annotation `@HtmlDoc(links)` renamed to ~~HtmlDoc.navlinks() navlinks~~.
New annotation ~~HtmlDoc.head() @HtmlDoc(head)~~.
diff --git a/juneau-docs-poc/docs/release-notes/7.0.1.md
b/juneau-docs-poc/docs/release-notes/7.0.1.md
index 5004beed0..2bd747e54 100644
--- a/juneau-docs-poc/docs/release-notes/7.0.1.md
+++ b/juneau-docs-poc/docs/release-notes/7.0.1.md
@@ -10,7 +10,7 @@ This release is a minor update.
It includes the following prereq updates:
Apache HttpClient: 4.5.3 to 4.5.4
Eclipse Jetty: 9.4.6.v20170531 to 9.4.8.v20171121
-###### juneau-marshall
+#### juneau-marshall
New static `create()` methods for builders on serializers and parsers.
This simplifies the syntax of creation of serializers and parsers by scratch.
@@ -32,18 +32,18 @@ The same static create methods have also been added to the
following classes:
The order of the parameters in \{@link
oaj.serializer.SerializerSession#serialize(Object,Object)\}
has been change to match \{@link
oaj.serializer.Serializer#serialize(Object,Object)\}.
Fixed some bugs in the XML parser related to whitespace and comments.
-###### juneau-svl
+#### juneau-svl
New methods on \{@link oaj.svl.Var\} class to restrict when nested and
embedded variables
are resolved.
\{@link oaj.svl.Var#allowNested()\}
\{@link oaj.svl.Var#allowRecurse()\}
-###### juneau-rest-server
+#### juneau-rest-server
New ~~@RestResource(maxInput)~~ and
~~RestMethod.maxInput() @RestMethod(maxInput)~~for alleviating
potential DoS attacks.
-###### juneau-microservice-server
+#### juneau-microservice-server
New pluggable console commands.
When you start up the microservice, you'll now see the following:
diff --git a/juneau-docs-poc/docs/release-notes/7.1.0.md
b/juneau-docs-poc/docs/release-notes/7.1.0.md
index 2d9996a2d..c8d94daaa 100644
--- a/juneau-docs-poc/docs/release-notes/7.1.0.md
+++ b/juneau-docs-poc/docs/release-notes/7.1.0.md
@@ -7,7 +7,7 @@ title: "Release 7.1.0"
**Date:** Mar 08, 2018
Version 7.1.0 is a major update with major implementation refactoring across
all aspects of the product.
-###### juneau-marshall
+#### juneau-marshall
Significant improvements made to the internals of the Serializer and Parser
classes.
Caching improvements on serializers and parsers have reduced execution time of
the core
@@ -83,7 +83,7 @@ It's now a regular method instead of a static method.
\{@link oaj.annotation.Swap @Swap\} annotation can now be used with
~~Surrogate~~classes.
New support for ~~PojoBuilders POJO Builders~~.
-###### juneau-svl
+#### juneau-svl
New variables:
\{@link oaj.svl.vars.CoalesceVar\}
@@ -94,7 +94,7 @@ New variables:
Variables moved from juneau-microservice:
\{@link oaj.svl.vars.ArgsVar\}
\{@link oaj.svl.vars.ManifestFileVar\}
-###### juneau-config
+#### juneau-config
The Config API has been completely revamped.
New features include:
@@ -103,7 +103,7 @@ File-system watcher integration support.
Changes made to file system files now automatically reflected in configurations
and interface proxies.
New builder-based design.
-###### juneau-dto
+#### juneau-dto
Enhancements to Swagger DTO:
New methods for setting and retrieving properties via name:
@@ -113,7 +113,7 @@ Support for setting non-standard fields such as "$ref" via
getter and setter
above.
Setter methods that take in beans and collections of beans can now take in
JSON strings.
-###### juneau-rest-server
+#### juneau-rest-server
`RestServletDefault` renamed to ~~BasicRestServlet~~.
`RestServletGroupDefault` renamed to ~~BasicRestServletGroup~~.
@@ -276,7 +276,7 @@ config="$S{juneau.configFile}"
```
-###### juneau-rest-client
+#### juneau-rest-client
New configuration property ~~RestClient.RESTCLIENT_query~~and
builder method ~~Builder.query(String,Object)~~.
@@ -289,7 +289,7 @@ New methods on ~~RestCall~~class:
~~RestCall.getResponseCode() getResponseCode()~~
~~RestCall~~ and \{@link oajrc.RestClient\}
now implement the `Closeable` interface.
-###### juneau-microservice
+#### juneau-microservice
`Resource` and `ResourceGroup` classes removed.
~~BasicRestServlet~~ and ~~BasicRestServletGroup~~ can be used instead.
diff --git a/juneau-docs-poc/docs/release-notes/7.2.0.md
b/juneau-docs-poc/docs/release-notes/7.2.0.md
index 604a8c838..d9b9784e3 100644
--- a/juneau-docs-poc/docs/release-notes/7.2.0.md
+++ b/juneau-docs-poc/docs/release-notes/7.2.0.md
@@ -13,7 +13,7 @@ New HTTP-Part annotations that are applicable to both the
servlet and client API
Serverless servlet and client unit testing.
Simplified UI customization.
Marshalls that combines serializers and parsers into a single API.
-###### juneau-marshall
+#### juneau-marshall
The REST client @Remoteable annotations and REST server @RemoteMethod
annotations which used to be
in separate packages in the client and server projects have been combined into
a single set of annotations in
@@ -137,7 +137,7 @@ RDF serializer subclasses have been moved into top-level
classes:
`RdfParser.NTriple` -> ~~NTripleParser~~
`RdfParser.Turtle` -> ~~TurtleParser~~
New API for pairing serializers and parsers for simplified syntax:
-###### Examples:
+#### Examples:
```text
@@ -174,13 +174,13 @@ String string = Json.DEFAULT.write(myPojo);
~~MsgPack~~
New/updated documentation:
2.15.3 - Simplified JSON
-###### juneau-dto
+#### juneau-dto
Fixed bug where Swagger ~~ oaj.dto.swagger.SchemaInfo.required(Object...)~~
was defined as a boolean
instead of a list of strings.
Boolean attributes are now handled correctly for HTML5.
For example, calling `new Select().disabled(true)` will produce ``
-###### juneau-rest-server
+#### juneau-rest-server
Auto-generated ~~RestSwagger Swagger UI~~.
Simplified ~~@RestResource(swagger)~~
@@ -345,7 +345,7 @@ New convenience annotations for specifying default `Accept`
and `Content-Type` h
~~RestMethod~~
~~RestMethod.defaultAccept defaultAccept~~
~~RestMethod.defaultContentType defaultContentType~~
-###### juneau-rest-client
+#### juneau-rest-client
Remote Resource interfaces support OpenAPI annotations.
Made improvements to the builder API for defining SSL support.
@@ -385,7 +385,7 @@ The `RestClient.getRemoteableProxy()` methods have been
split into separate meth
~~RestClient.getRemoteResource(Class)~~
~~RestClient.getRemoteResource(Class,Object)~~
~~RestClient.getRemoteResource(Class,Object,Serializer,Parser)~~
-###### juneau-rest-microservice
+#### juneau-rest-microservice
The look-and-feel of an application is now controlled through the external
configuration file and access to
CSS stylesheets in the working directory in a new folder called `files`:
diff --git a/juneau-docs-poc/docs/release-notes/7.2.1.md
b/juneau-docs-poc/docs/release-notes/7.2.1.md
index 275620b69..7611690f6 100644
--- a/juneau-docs-poc/docs/release-notes/7.2.1.md
+++ b/juneau-docs-poc/docs/release-notes/7.2.1.md
@@ -8,13 +8,13 @@ title: "Release 7.2.1"
This release contains mostly bug fixes.
Code changes have been made to preserve binary backwards compatibility with
7.1.0.
-###### juneau-marshall
+#### juneau-marshall
The ~~@JsonSchema~~ annotation has been merged with the ~~@Schema~~ annotation.
Annotations typically used on bean properties (getters/setters/public fields)
can now be used on private fields.
This is inline with behavior on JPA-annotated beans.
These include: @Swap, @Html, @Xml, @BeanProperty.
-###### juneau-rest-server
+#### juneau-rest-server
Method-level annotations (e.g. @RestMethod) and parameter-level annotations
(e.g. @Query) are now inheritable
from parent classes and interfaces.
@@ -25,7 +25,7 @@ A new ~~ResolvingReaderResource~~ class has been added that
includes the variabl
this relies on the `juneau-svl` package.
The `RemoteInterfaceServlet` class has been renamed to \{@link
oajr.remote.RrpcServlet\}.
`@RestMethod(name="PROXY")` has been changed to `@RestMethod(name="RRPC")`.
-###### juneau-rest-client
+#### juneau-rest-client
The `RestClient.getRemoteInterface()` method has been renamed to \{@link
oajrc.RestClient#getRrpcInterface(Class)\}.
Fixed a bug where `@RemoteMethod(path)` values containing '/' characters were
erroneously being encoded.
diff --git a/juneau-docs-poc/docs/release-notes/8.0.0.md
b/juneau-docs-poc/docs/release-notes/8.0.0.md
index cac4c3534..ac16a3781 100644
--- a/juneau-docs-poc/docs/release-notes/8.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/8.0.0.md
@@ -27,14 +27,14 @@ The structure is now as follows:
**`juneau-microservice-rest`** - Now contains only servlet example classes.
No Jetty configuration.
**`juneau-microservice-rest-jetty`** - Servlet examples deployed using Jetty.
**`juneau-microservice-rest-springboot`** - Servlet examples deployed using
Spring Boot.
-###### juneau-svl
+#### juneau-svl
New SVL variables:
\{@link oaj.svl.vars.SubstringVar\}
\{@link oaj.svl.vars.PatternExtractVar\}
\{@link oaj.svl.vars.PatternReplaceVar\}
\{@link oaj.svl.vars.LenVar\}
-###### juneau-config
+#### juneau-config
New methods for setting a system default configuration:
\{@link oaj.config.Config\}
@@ -45,17 +45,17 @@ New classpath store.
New API method:
\{@link oaj.config.store.ConfigStore\}
\{@link oaj.config.store.ConfigStore#exists(String) exists(String)\}
-###### juneau-rest-server
+#### juneau-rest-server
New methods on ~~RestServlet~~:
~~RestServlet.setRestResourceResolver(RestResourceResolver)
setRestResourceResolver(RestResourceResolver)~~
~~RestServlet.getPath() getPath()~~
The registered resource resolver is now used to instantiate objects of classes
defined via ~~@RestResource~~.
This allows for any of those instance to be injectable beans.
-###### juneau-rest-server-springboot
+#### juneau-rest-server-springboot
New project containing classes for making it easy to use Juneau with Spring
Boot.
-###### juneau-microservice-core
+#### juneau-microservice-core
New project that consist of just the core \{@link
oaj.microservice.Microservice\} class and console support.
The Microservice API has been revamped to use a builder-based approach to
creating microservices.
@@ -67,13 +67,13 @@ directory that ends with ".cfg".
New \{@link oaj.microservice.MicroserviceListener\} API for defining lifecycle
event listeners.
New \{@link oaj.microservice.console.ConfigCommand\} class for performing
config queries and updates through
the microservice console.
-###### juneau-microservice-jetty
+#### juneau-microservice-jetty
New \{@link oaj.microservice.jetty.JettyMicroservice\} class replaces the
previous `RestMicroservice`.
-###### juneau-my-jetty-microservice
+#### juneau-my-jetty-microservice
New template starter project for Jetty-based microservices.
-###### juneau-my-springboot-microservice
+#### juneau-my-springboot-microservice
Template starter project for Spring-Boot-based microservices.
`app.json` and `Procfile` files for deploying examples into Heroku.
diff --git a/juneau-docs-poc/docs/release-notes/8.1.0.md
b/juneau-docs-poc/docs/release-notes/8.1.0.md
index 2697343a7..0794ccb82 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.0.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.0.md
@@ -16,7 +16,7 @@ title: "Release 8.1.0"
~~RestRoleGuards Role Guards~~
~~RestLoggingAndDebugging Improved REST logging/debugging~~
[New MockRest API](#juneau-rest-mock)
-###### juneau-marshall
+#### juneau-marshall
New utility class for diffing beans:
\{@link oaj.utils.BeanDiff\}
@@ -66,7 +66,7 @@ All serializers and parsers now have built-in default swaps
for common class typ
\{@link java.util.TimeZone\}
\{@link javax.xml.datatype.XMLGregorianCalendar\}
\{@link java.time.ZoneId\}
-###### juneau-config
+#### juneau-config
Support for import statements:
@@ -88,7 +88,7 @@ system properties.
Entries in the system config are automatically set as system properties.
This mean you can set any of the various serializer and parser settings (e.g.
"JsonSerializer.simpleMode.b")
in the default configuration area or `application.properties`.
-###### juneau-rest-server
+#### juneau-rest-server
New annotations that can be applied to REST classes and methods to configure
serializers and parsers.
@@ -238,6 +238,6 @@ public String myMethod() throws Exception {...}
See ~~RestLoggingAndDebugging~~for details.
Fixed a bug where the HTTP response was returning 405 (method not found) but
should really be 404 (not found)
when no path patterns match on any of the Java methods.
-###### juneau-rest-client
+#### juneau-rest-client
PATCH support added.
diff --git a/juneau-docs-poc/docs/release-notes/8.1.1.md
b/juneau-docs-poc/docs/release-notes/8.1.1.md
index 7a3b695d8..f4c47355b 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.1.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.1.md
@@ -7,7 +7,7 @@ title: "Release 8.1.1"
**Date:** Sept 20, 2019
Juneau 8.1.1 is a minor release but introduces some new features/modifications.
-###### juneau-marshall
+#### juneau-marshall
Support for serializing/parsing \{@link java.util.Optional\} objects and bean
properties.
Fixed a bug in the parsers where the generic subtype of a complex bean
property type involving both collections and arrays
@@ -22,7 +22,7 @@ Defaulting SVL variables now won't ignore additional
parameters.
"$S\{Foo,bar,baz\}" used to default to "bar" but now will default to "bar,baz".
Ranking support has been added to all @XConfig annotations.
This allows you to override the normal precedence of application of config
annotations on class and method hierarchies.
-###### juneau-rest-server
+#### juneau-rest-server
Support for \{@link java.util.Optional\} on method parameters annotated with
\{@link oaj.http.annotation.Header\}, \{@link oaj.http.annotation.FormData\},
\{@link oaj.http.annotation.Query\}, \{@link oaj.http.annotation.Path\}.
@@ -63,11 +63,11 @@ The ~~@RestResource(staticFiles)~~ annotation now supports
absolute path locatio
Fixed a bug in ~~@RestResource(staticFiles)~~where the order of lookup between
parent and child resources
was wrong.
-###### juneau-rest-client
+#### juneau-rest-client
Removed the dependency on the `juneau-rest-server` module.
Allows the client API to be used without pulling in all the javax.servlet and
server dependencies.
-###### juneau-examples
+#### juneau-examples
The PetStore application has been moved to a separate Git repository.
[GitHub Repo](https://github.com/apache/juneau-petstore)
diff --git a/juneau-docs-poc/docs/release-notes/8.1.2.md
b/juneau-docs-poc/docs/release-notes/8.1.2.md
index ab8ba21e0..caf064379 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.2.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.2.md
@@ -7,7 +7,7 @@ title: "Release 8.1.2"
**Date:** Dec 01, 2019
Juneau 8.1.2 is a moderate release.
-###### juneau-marshall
+#### juneau-marshall
Support for read-only and write-only properties.
~~Bean.bpro()~~
@@ -26,12 +26,12 @@ New convenience methods:
\{@link oaj.annotation.Beanc @Beanc\} replaces ~~BeanConstructor
@BeanConstructor~~.
\{@link oaj.http.remote.Remote @Remote\} replaces ~~RemoteResource
@RemoteResource~~.
Shortened names for \{@link oaj.annotation.Bean#dictionary @Bean(dictionary)\}
and \{@link oaj.BeanContext.Builder#beanDictionary(Class...)\}.
-###### juneau-rest-server
+#### juneau-rest-server
\{@link oajr.annotation.Rest @Rest\} replaces ~~RestResource @RestResource~~
with shorter syntax.
New method ~~RestResponse.setHeaderSafe(String,String)~~to strip invalid
characters from header values.
Fixed issues related to invalid characters being set on HTTP header values.
-###### juneau-rest-client
+#### juneau-rest-client
\{@link oajrc.RestClient\} is now extendible. The constructor has been made
public and simplified to:
~~ oajrc.RestClient.RestClient(RestClient.Builder)~~.
diff --git a/juneau-docs-poc/docs/release-notes/8.1.3.md
b/juneau-docs-poc/docs/release-notes/8.1.3.md
index 3f8901ee1..d81581cbe 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.3.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.3.md
@@ -7,7 +7,7 @@ title: "Release 8.1.3"
**Date:** Jan 20, 2020
Juneau 8.1.3 is a moderate release.
-###### juneau-marshall
+#### juneau-marshall
Dynamically applied annotations: ~~DynamicallyAppliedAnnotations~~
Better representation of nulls for XML and HTML content properties.
@@ -25,7 +25,7 @@ JsonParser.DEFAULT.parse(input, MyBean[].class);
```
-###### juneau-rest-server
+#### juneau-rest-server
Fixed bug in ~~BasicRestCallHandler~~ where if you have the following REST
methods...
@@ -56,10 +56,10 @@ Renamed the following annotations:
@RestMethod(attrs) --> ~~RestMethod.reqAttrs() @RestMethod(reqAttrs)~~
@RestMethod(defaultRequestHeaders) --> ~~RestMethod.reqHeaders()
@RestMethod(reqHeaders)~~
New auto-generated REST method execution statistics:
~~RestExecutionStatistics~~
-###### juneau-rest-client
+#### juneau-rest-client
Several convenience methods defined in \{@link oajrc.RestClient.Builder\} that
were deprecated in 8.1.2 have been
undeprecated in this release due to user feedback.
-###### juneau-doc
+#### juneau-doc
New auto-generated glossary of all configurable properties:
~~GlossaryConfigurableProperties~~
diff --git a/juneau-docs-poc/docs/release-notes/8.2.0.md
b/juneau-docs-poc/docs/release-notes/8.2.0.md
index cf65ce5dc..9fad09475 100644
--- a/juneau-docs-poc/docs/release-notes/8.2.0.md
+++ b/juneau-docs-poc/docs/release-notes/8.2.0.md
@@ -10,7 +10,7 @@ Juneau 8.2.0 is a major release.
The most significant change is the addition of an entirely new ~~RestClient~~
API build from scratch
with near 100% unit test coverage.
The new API is located in the `org.apache.juneau.rest.client2` package and
will replace the old API in 9.0.
-###### juneau-marshall
+#### juneau-marshall
\{@link oaj.annotation.Bean @Bean\} and \{@link oaj.annotation.BeanIgnore
@BeanIgnore\} annotations can alternately occur in parent class hierarchy.
The first one found dictates whether a class is ignored as a bean or not.
@@ -214,7 +214,7 @@ return this;
Note you could previously use the @BeanProperty annotation to identify these
setters.
-###### juneau-rest-server
+#### juneau-rest-server
New ~~RestContext.REST_context REST_context~~/~~Rest.context()
@Rest(context)~~ setting to allow you to extend the \{@link oajr.RestContext\}
class.
@@ -274,7 +274,7 @@ Added the following convenience hook methods on the
~~RestServlet~~ and ~~BasicR
~~BasicRest.onPostCall(RestRequest,RestResponse)
onPostCall(RestRequest,RestResponse)~~
~~BasicRest.onEndCall(HttpServletRequest,HttpServletResponse)
onEndCall(HttpServletRequest,HttpServletResponse)~~
New \{@link oajr.annotation.Rest#debugOn() @Rest(debugOn)\} annotation for
turning on debug mode using class/method identifiers:
-###### Example:
+#### Example:
```text
@@ -347,14 +347,14 @@ String getFoo(); // @RestMethod(name=GET,path="/foo") is
implied.
Improved ~~RestContext.REST_messages REST_messages~~ support (mostly bug
fixes).
-###### juneau-rest-server-springboot
+#### juneau-rest-server-springboot
~~JuneauRestInitializer~~now provides a no-arg constructor so that it can be
used in
the `@ConfigurationContext(initializers=JuneauRestInitializer.class)` when
unit testing
using @SpringBootTest.
New
~~ResourceDescription.ResourceDescription(String,String,String)~~constructor
and ~~ResourceDescriptions.append(String,String,String)~~ method.
New ~~Hyperlink~~class.
-###### juneau-rest-client
+#### juneau-rest-client
Completely revamped RestClient API.
All APIs now extend from HttpClient interfaces.
@@ -381,7 +381,7 @@ Additions to \{@link oaj.http.remote.Remote\} annotation:
\{@link oaj.http.remote.Remote#version version\} - Adds a client version
header to all requests.
\{@link oaj.http.remote.Remote#headers headers\} - Adds a set of headers to
all requests.
~~headerSupplier~~ - Adds a dynamic supplier of headers to all requests.
-###### juneau-rest-mock
+#### juneau-rest-mock
The `MockRest` and `MockRemote` classes have been remove entirely and all
existing functions
have been moved into the improved ~~MockRestClient~~ class. All REST test
mocking can be
diff --git a/juneau-docs-poc/docs/release-notes/9.0.0.md
b/juneau-docs-poc/docs/release-notes/9.0.0.md
index e843f0314..17eba7fd1 100644
--- a/juneau-docs-poc/docs/release-notes/9.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/9.0.0.md
@@ -13,7 +13,7 @@ Configuration properties have been removed entirely. They
have been replaced wi
architecture. In addition to making the code more maintainable, it also
improves performance when
creating new serializers/parsers/rest clients (and others).
REST servlets now seemlessly integrate with Spring Boot.
-###### juneau-marshall
+#### juneau-marshall
Eliminated the various `@XConfig(applyX=\{...\})` annotations and replaced
them with the ability
to apply targeted annotations directly to configuration classes and methods
(such as REST classes/methods).
@@ -37,7 +37,7 @@ New \{@link oaj.annotation.Marshalled @Marshalled\}
annotation for non-bean clas
New \{@link oaj.annotation.BeanConfig#ignoreUnknownEnumValues()
@BeanConfig(ignoreUnknownEnumValues)\} annotation and support for ignoring
unknown enum values during parsing.
Java Serialized Object marshalling support has been removed entirely due to
security risks with usage (better safe than sorry).
-###### juneau-rest-common
+#### juneau-rest-common
New module containing the common REST classes/annotations uses by both the
client and server APIs.
These were previously contained within `juneau-marshall`.
@@ -50,7 +50,7 @@ extensions to the Apache HttpComponents APIs. Significant
new functionality her
\{@link oaj.http.remote.RemotePatch\}
\{@link oaj.http.remote.RemotePost\}
\{@link oaj.http.remote.RemoteDelete\}
-###### juneau-rest-server
+#### juneau-rest-server
Significant refactoring done to allow for many extensible aspects of the API
to be performed through injected beans
in Spring. These include logging, debugging, REST method arg types, static
files, file finders, swagger creators, thrown stores, response
@@ -78,16 +78,16 @@ Defining REST resources with predefined marshalling support
is now much simpler.
\{@link oajr.servlet.BasicRestServletGroup\}
\{@link oajr.servlet.BasicRestObject\}
\{@link oajr.servlet.BasicRestObjectGroup\}
-###### juneau-dto
+#### juneau-dto
Addition of OpenAPI 3.0 (\{@link oaj.dto.openapi3\} package).
-###### juneau-rest-server-springboot
+#### juneau-rest-server-springboot
The requirement for using `JuneauRestInitializer` during App initialization to
use bean injection has been eliminated.
Instead, root resources should simply extend from \{@link
oajr.springboot.BasicSpringRestServlet\} and \{@link
oajr.springboot.BasicSpringRestServletGroup\}.
These will automatically hook into the Spring Boot framework for resolution of
REST children and various extension beans added
to the REST API framework.
-###### juneau-rest-client
+#### juneau-rest-client
While the general usage pattern stays the same, the REST client code has
undergone significant rewriting. It is now more inline
as an extension of the Apache HttpClient library. Much new functionality such
as support for fluent assertions has been added.
@@ -105,6 +105,6 @@ as an extension of the Apache HttpClient library. Much new
functionality such a
```
-###### juneau-rest-mock
+#### juneau-rest-mock
Entirely rewritten. Changes too many to list.
diff --git a/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md
b/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md
index 995031fc5..cf0e6d366 100644
--- a/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md
+++ b/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md
@@ -2,7 +2,7 @@
title: "Module: juneau-marshall"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,19 +12,20 @@ title: "Module: juneau-marshall"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-marshall-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.marshall_{{JUNEAU_VERSION}}.jar
```
-The `juneau-marshall` artifact contains the following:
+### Contents/Features
+
- Foundation for all serializers and parsers.
- Implementations for all serializers and parsers except RDF languages.
- Extensions to Apache HttpCore components used by both client and server APIs.
diff --git a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
b/juneau-docs-poc/docs/topics/02.02.Marshallers-test.md
similarity index 95%
copy from juneau-docs-poc/docs/topics/02.02.Marshallers.md
copy to juneau-docs-poc/docs/topics/02.02.Marshallers-test.md
index abf7373d7..d5985116b 100644
--- a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
+++ b/juneau-docs-poc/docs/topics/02.02.Marshallers-test.md
@@ -5,7 +5,6 @@ title: "Marshallers"
[Marshallers](../apidocs/org/apache/juneau/marshaller/Marshaller.html) are
simple pairings of a
[Serializer](../apidocs/org/apache/juneau/serializer/Serializer.html)
and [Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience
methods for serializing and parsing POJOs.
- [Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)
-
`T` \{@link oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class)\}
- [CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)
- `String`
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write(Object))
@@ -21,25 +20,14 @@ and
[Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience m
-
[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)
- `byte[]`
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write(Object))
- [MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)
-
-:::tip Examples
-
-
-```java
+##### Examples:
// Using instance.
Json json = new Json();
MyPojo myPojo = json.read(string, MyPojo.class);
String string = json.write(myPojo);
-```
-
-
-```java
// Using DEFAULT instance.
MyPojo myPojo = Json.DEFAULT.read(string, MyPojo.class);
String string = Json.DEFAULT.write(myPojo);
-```
-
-
Juneau comes with the following predefined marshallers:
- [Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)
- [Html](../apidocs/org/apache/juneau/marshaller/Html.html)
@@ -51,23 +39,12 @@ Juneau comes with the following predefined marshallers:
- [Uon](../apidocs/org/apache/juneau/marshaller/Uon.html)
- [UrlEncoding](../apidocs/org/apache/juneau/marshaller/UrlEncoding.html)
- [Xml](../apidocs/org/apache/juneau/marshaller/Xml.html)
-
Each predefined marshaller also includes static convenience from/to methods to
make it even easier to
perform marshalling on POJOs:
- [Json](../apidocs/org/apache/juneau/marshaller/Json.html)
- `String`
*[of(Object)](../apidocs/org/apache/juneau/marshaller/Json.html#of(Object))*
-
`T` *\{@link oaj.marshaller.Json#to(Object,Class) to(Object,Class)\}*
-:::
-
-:::tip Examples
-
-
-```java
+##### Examples:
// Using shortcut static methods.
MyPojo myPojo = Json.to(jsonString, MyPojo.class);
-String json = Json.of(myPojo);
-
-```
-
-:::
+String json = Json.of(myPojo);
\ No newline at end of file
diff --git a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
b/juneau-docs-poc/docs/topics/02.02.Marshallers-test2.md
similarity index 95%
copy from juneau-docs-poc/docs/topics/02.02.Marshallers.md
copy to juneau-docs-poc/docs/topics/02.02.Marshallers-test2.md
index abf7373d7..d5985116b 100644
--- a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
+++ b/juneau-docs-poc/docs/topics/02.02.Marshallers-test2.md
@@ -5,7 +5,6 @@ title: "Marshallers"
[Marshallers](../apidocs/org/apache/juneau/marshaller/Marshaller.html) are
simple pairings of a
[Serializer](../apidocs/org/apache/juneau/serializer/Serializer.html)
and [Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience
methods for serializing and parsing POJOs.
- [Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)
-
`T` \{@link oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class)\}
- [CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)
- `String`
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write(Object))
@@ -21,25 +20,14 @@ and
[Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience m
-
[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)
- `byte[]`
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write(Object))
- [MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)
-
-:::tip Examples
-
-
-```java
+##### Examples:
// Using instance.
Json json = new Json();
MyPojo myPojo = json.read(string, MyPojo.class);
String string = json.write(myPojo);
-```
-
-
-```java
// Using DEFAULT instance.
MyPojo myPojo = Json.DEFAULT.read(string, MyPojo.class);
String string = Json.DEFAULT.write(myPojo);
-```
-
-
Juneau comes with the following predefined marshallers:
- [Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)
- [Html](../apidocs/org/apache/juneau/marshaller/Html.html)
@@ -51,23 +39,12 @@ Juneau comes with the following predefined marshallers:
- [Uon](../apidocs/org/apache/juneau/marshaller/Uon.html)
- [UrlEncoding](../apidocs/org/apache/juneau/marshaller/UrlEncoding.html)
- [Xml](../apidocs/org/apache/juneau/marshaller/Xml.html)
-
Each predefined marshaller also includes static convenience from/to methods to
make it even easier to
perform marshalling on POJOs:
- [Json](../apidocs/org/apache/juneau/marshaller/Json.html)
- `String`
*[of(Object)](../apidocs/org/apache/juneau/marshaller/Json.html#of(Object))*
-
`T` *\{@link oaj.marshaller.Json#to(Object,Class) to(Object,Class)\}*
-:::
-
-:::tip Examples
-
-
-```java
+##### Examples:
// Using shortcut static methods.
MyPojo myPojo = Json.to(jsonString, MyPojo.class);
-String json = Json.of(myPojo);
-
-```
-
-:::
+String json = Json.of(myPojo);
\ No newline at end of file
diff --git a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
b/juneau-docs-poc/docs/topics/02.02.Marshallers.md
index abf7373d7..109abdf41 100644
--- a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
+++ b/juneau-docs-poc/docs/topics/02.02.Marshallers.md
@@ -4,26 +4,19 @@ title: "Marshallers"
[Marshallers](../apidocs/org/apache/juneau/marshaller/Marshaller.html) are
simple pairings of a
[Serializer](../apidocs/org/apache/juneau/serializer/Serializer.html)
and [Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience
methods for serializing and parsing POJOs.
-- [Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)
-`T` \{@link oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class)\}
-- [CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)
-- `String`
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write(Object))
-- [Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)
-- [Html](../apidocs/org/apache/juneau/marshaller/Html.html)
-- [Json](../apidocs/org/apache/juneau/marshaller/Json.html)
-- [OpenApi](../apidocs/org/apache/juneau/marshaller/OpenApi.html)
-- [PlainText](../apidocs/org/apache/juneau/marshaller/PlainText.html)
-- [Json5](../apidocs/org/apache/juneau/marshaller/Json5.html)
-- [Uon](../apidocs/org/apache/juneau/marshaller/Uon.html)
-- [UrlEncoding](../apidocs/org/apache/juneau/marshaller/UrlEncoding.html)
-- [Xml](../apidocs/org/apache/juneau/marshaller/Xml.html)
--
[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)
-- `byte[]`
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write(Object))
-- [MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)
+<java-abstract-class>[Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)</java-abstract-class>
+><java-method>`T`
[read(Object,Class<T>)](../apidocs/org/apache/juneau/marshaller/Marshaller.html#read)</java-method>
+>><java-abstract-class>[CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)</java-abstract-class>
+>>><java-method>`String`
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write)</java-method>
+>>>><javac-class>[Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)</javac-class> <javac-class>[Html](../apidocs/org/apache/juneau/marshaller/Html.html)</javac-class> <javac-class>[Json](../apidocs/org/apache/juneau/marshaller/Json.html)</javac-class> <javac-class>[OpenApi](../apidocs/org/apache/juneau/marshaller/OpenApi.html)</javac-class> <javac-class>[PlainText](../apidocs/org/apache/juneau/marshaller/PlainText.html)</javac-class>
[...]
+
+>><java-abstract-class>[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)</java-abstract-class>
+>>><java-method>`byte[]`
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write)</java-method>
+>>>><javac-class>[MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)</javac-class>
-:::tip Examples
+:::tip Examples
```java
// Using instance.
@@ -32,12 +25,12 @@ MyPojo myPojo = json.read(string, MyPojo.class);
String string = json.write(myPojo);
```
-
```java
// Using DEFAULT instance.
MyPojo myPojo = Json.DEFAULT.read(string, MyPojo.class);
String string = Json.DEFAULT.write(myPojo);
```
+:::
Juneau comes with the following predefined marshallers:
@@ -58,7 +51,6 @@ perform marshalling on POJOs:
- `String`
*[of(Object)](../apidocs/org/apache/juneau/marshaller/Json.html#of(Object))*
`T` *\{@link oaj.marshaller.Json#to(Object,Class) to(Object,Class)\}*
-:::
:::tip Examples
diff --git a/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md
b/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md
index 005d82cd2..ddee752d4 100644
--- a/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md
+++ b/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md
@@ -2,7 +2,7 @@
title: "Module: juneau-marshall-rdf"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-marshall-rdf"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-marshall-rdf-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.marshaller.rdf_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
The `juneau-marshall-rdf` library provides additional serializers and parsers
for RDF.
These rely on the Apache Jena library to provide support for the following
languages:
- RDF/XML
diff --git a/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md
b/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md
index 73d288408..0b17efd0d 100644
--- a/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md
+++ b/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md
@@ -2,7 +2,7 @@
title: "Module: juneau-dto"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,17 +12,17 @@ title: "Module: juneau-dto"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-dto-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.dto_{{JUNEAU_VERSION}}.jar
```
-The `juneau-dto` library contains several predefined POJOs for generating
commonly-used document types.
-This section describes support for these POJOs.
+### Contents/Features
+- Predefined POJOs for generating commonly-used document types.
diff --git a/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md
b/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md
index b2f062960..18df24155 100644
--- a/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md
+++ b/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md
@@ -2,7 +2,7 @@
title: "Module: juneau-config"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,13 +12,13 @@ title: "Module: juneau-config"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-config-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.config_{{JUNEAU_VERSION}}.jar
diff --git a/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md
b/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md
index ab91b94fe..371873c4c 100644
--- a/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md
+++ b/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md
@@ -2,7 +2,7 @@
title: "Module: juneau-assertions"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-assertions"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-assertions-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.assertions_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
The [assertions](../apidocs/org/apache/juneau/assertions.html) package in
Juneau is a powerful API for performing fluent style assertions.
It is used to implement built-in assertion methods on both the server and
client side APIs.
But it can also be used standalone for testing.
diff --git a/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md
b/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md
index 30edfc66f..96b6965bd 100644
--- a/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md
+++ b/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md
@@ -2,7 +2,7 @@
title: "Module: juneau-rest-common"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-rest-common"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-rest-common-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.rest.common_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
The [http](../apidocs/org/apache/juneau/http.html) package contains a slew of
useful extensions to the Apache HttpComponents libraries
and define APIs used extensively in the REST server and client APIs.
- [http](../apidocs/org/apache/juneau/http.html) - Utility classes used for
HTTP parts/headers/entities.
diff --git a/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md
b/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md
index 0569b56ef..bf4800191 100644
--- a/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md
+++ b/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md
@@ -2,7 +2,7 @@
title: "Module: juneau-rest-server"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,13 +12,13 @@ title: "Module: juneau-rest-server"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-rest-server-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.rest.server_{{JUNEAU_VERSION}}.jar
@@ -42,51 +42,35 @@ The root class,
[RestServlet](../apidocs/org/apache/juneau/rest/servlet/RestServ
This allows maximum flexibility for the developer since you can let Juneau
handle operations such as
serialization, or you can revert to the existing servlet APIs to do low-level
processing of requests yourself.
It also means you need nothing more than a Servlet container such as Jetty to
use the REST framework.
-### Features
--
-Deployable in standard Servlet containers.
--
-Deployable in Spring Boot environments with full support for injected beans.
--
-Serializes POJOs to JSON, XML, HTML, URL-Encoding, UON, RDF/XML, N-Triple,
Turtle, N3, SOAP, or
+### Contents/Features
+
+- Deployable in standard Servlet containers.
+- Deployable in Spring Boot environments with full support for injected beans.
+- Serializes POJOs to JSON, XML, HTML, URL-Encoding, UON, RDF/XML, N-Triple,
Turtle, N3, SOAP, or
Java-serialized-object based on value of Accept header.
No user code is required to handle these types.
-- Extensible design that provides ability to override existing content type
handlers, or add the
-
-ability to handle other kinds of content types.
--
-Parses content of POST/PUT request bodies to POJOs.
--
-Automatic built-in ability to serialize POJO metadata to JSON+SCHEMA,
XML+SCHEMA, or HTML+SCHEMA based on
-Accept header.
--
-Automatic negotiation of output Writer based on HTTP headers.
-Automatic handling of Accept-Charset header for all character sets supported
by the JVM.
-Automatic handling of Accept-Encoding header with registered encoders.
--
-Automatic error handling.
-- Automatic 401 errors (Unauthorized) on failed guards.
-- Automatic 404 errors (Not Found) on unmatched path patterns.
-- Automatic 405 errors (Method Not Implemented) on unimplemented methods.
-- Automatic 406 errors (Not Acceptable) when no matching serializer was found
to handle the
-
-Accept header.
-- Automatic 412 errors (Precondition Failed) when all matchers failed to match.
-- Automatic 415 errors (Unsupported Media Type) when no matching parser was
found was found to handle
-
-the Content-Type header.
-- Automatic 500 errors on uncaught exceptions.
+- Extensible design that provides ability to override existing content type
handlers, or add the ability to handle other kinds of content types.
+- Parses content of POST/PUT request bodies to POJOs.
+- Automatic built-in ability to serialize POJO metadata to JSON+SCHEMA,
XML+SCHEMA, or HTML+SCHEMA based on Accept header.
+- Automatic negotiation of output Writer based on HTTP headers.
+ - Automatic handling of Accept-Charset header for all character sets
supported by the JVM.
+ - Automatic handling of Accept-Encoding header with registered encoders.
+- Automatic error handling.
+ - Automatic 401 errors (Unauthorized) on failed guards.
+ - Automatic 404 errors (Not Found) on unmatched path patterns.
+ - Automatic 405 errors (Method Not Implemented) on unimplemented methods.
+ - Automatic 406 errors (Not Acceptable) when no matching serializer was
found to handle the Accept header.
+ - Automatic 412 errors (Precondition Failed) when all matchers failed to
match.
+ - Automatic 415 errors (Unsupported Media Type) when no matching parser was
found was found to handle the Content-Type header.
+ - Automatic 500 errors on uncaught exceptions.
--
-Support for parsing all HTTP parts (headers, query, formData, path variables)
using Swagger formatting rules and validations.
-Not limited to simple POJOs but rather you can represent arbitrarily-complex
POJOs in any HTTP part using UON notation.
--
-Auto-created Swagger JSON and Swagger UI available through OPTIONS requests of
resources.
--
-Various useful debugging features that make debugging using a browser
extremely simple...
-Ability to pass HTTP header values as URL GET parameters (e.g.
&Accept=text/xml).
-- Ability to pass HTTP content on PUT/POST requests as a URL GET parameter
+- Support for parsing all HTTP parts (headers, query, formData, path
variables) using Swagger formatting rules and validations.
+ Not limited to simple POJOs but rather you can represent
arbitrarily-complex POJOs in any HTTP part using UON notation.
+- Auto-created Swagger JSON and Swagger UI available through OPTIONS requests
of resources.
+- Various useful debugging features that make debugging using a browser
extremely simple...
+ - Ability to pass HTTP header values as URL GET parameters (e.g.
&Accept=text/xml).
+ - Ability to pass HTTP content on PUT/POST requests as a URL GET parameter
(e.g. &content=(foo=bar)).
Ability to simulate non-GET requests using a &method GET parameter
diff --git
a/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md
b/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md
index 1325577c2..6a208e4d3 100644
--- a/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md
+++ b/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md
@@ -2,7 +2,7 @@
title: "Module: juneau-rest-server-springboot"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,17 +12,19 @@ title: "Module: juneau-rest-server-springboot"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-rest-server-springboot-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.rest.server.springboot_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
The `juneau-rest-server-springboot` library provides classes to make it easy
to integrate
Juneau REST resources with Spring and Spring Boot.
diff --git a/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md
b/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md
index 232ea20cf..1ca37a566 100644
--- a/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md
+++ b/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md
@@ -2,7 +2,7 @@
title: "Module: juneau-rest-client"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-rest-client"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-rest-client-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.rest.client_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
Built upon the feature-rich Apache HttpClient library, the Juneau RestClient
API adds support for fluent-style
REST calls and the ability to perform marshalling of POJOs to and from HTTP
parts.
:::tip Example
diff --git a/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md
b/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md
index d7c9d0c9b..2a7d5087e 100644
--- a/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md
+++ b/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md
@@ -2,7 +2,7 @@
title: "Module: juneau-rest-mock"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-rest-mock"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-rest-mock-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.rest.mock_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
The `juneau-rest-mock` module contains convenience APIs for performing
serverless unit
testing of your REST APIs.
Each of the APIs provide the ability to fully test your server and client REST
interfaces without the
diff --git
a/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md
b/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md
index 11bd0981e..5fc4c196c 100644
--- a/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md
+++ b/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md
@@ -2,7 +2,7 @@
title: "Module: juneau-microservice-core"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-microservice-core"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-microservice-core-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.microservice.core_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
Juneau Microservice is an API for creating stand-alone executable jars with
automatic support for
Juneau configurations and console commands.
Features include:
diff --git
a/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md
b/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md
index b7c6a30a3..59910dfa5 100644
--- a/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md
+++ b/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md
@@ -2,7 +2,7 @@
title: "Module: juneau-microservice-jetty"
---
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
@@ -12,17 +12,19 @@ title: "Module: juneau-microservice-jetty"
</dependency>
```
-##### Java Library
+### Java Library
```text
juneau-microservice-jetty-{{JUNEAU_VERSION}}.jar
```
-##### OSGi Module
+### OSGi Module
```text
org.apache.juneau.microservice.jetty_{{JUNEAU_VERSION}}.jar
```
+### Contents/Features
+
Juneau Microservice Jetty is an API for creating stand-alone executable jars
that can be used to
start lightweight configurable REST interfaces with all the power of the
Juneau REST server and client APIs.
diff --git a/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md
b/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md
index 78439bea4..da4bd942b 100644
--- a/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md
+++ b/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md
@@ -152,7 +152,7 @@ and will be describe in the client code section.
@Path and @Body are used by both the client and server side code to map to
REST artifacts on both
sides.
Both sets of annotations are provided by pulling in the Juneau dependency
below:
-##### Maven Dependency
+### Maven Dependency
```xml
<dependency>
diff --git a/juneau-docs-poc/docs/topics/temp.json
b/juneau-docs-poc/docs/topics/temp.json
new file mode 100644
index 000000000..e69de29bb
diff --git a/juneau-docs-poc/html-to-md-converter.js
b/juneau-docs-poc/html-to-md-converter.js
index d135c7b05..44247369d 100755
--- a/juneau-docs-poc/html-to-md-converter.js
+++ b/juneau-docs-poc/html-to-md-converter.js
@@ -323,6 +323,9 @@ function convertHtmlToMarkdown(htmlContent, sourceFile) {
// Process {@link} tags for Javadoc-style links
markdown = processJuneauLinks(markdown);
+ // Convert Java trees to custom elements (must come before
convertClassHierarchies)
+ markdown = convertJavaTreeToCustomElements(markdown);
+
// Convert class hierarchy trees
markdown = convertClassHierarchies(markdown);
@@ -462,6 +465,413 @@ function convertClassHierarchies(content) {
return content;
}
+function convertJavaTreeToCustomElements(content) {
+ // Convert Java tree HTML structures to custom element format
+ console.log('🔍 convertJavaTreeToCustomElements called, content length:',
content.length);
+
+ const result =
content.replace(/<ul\s+class=['"](?:.*\s)?javatree(?:\s.*)?['"][^>]*>([\s\S]*?)<\/ul>/gi,
(match, listContent) => {
+ try {
+ console.log('Converting Java tree:', match.substring(0, 100) +
'...');
+ const lines = parseJavaTreeToLines(listContent, 0);
+ return '\n' + lines.join('\n') + '\n';
+ } catch (error) {
+ console.error('Error converting Java tree:', error);
+ return match;
+ }
+ });
+
+ console.log('🔍 convertJavaTreeToCustomElements finished');
+ return result;
+}
+
+function parseJavaTreeToLines(html, depth) {
+ const lines = [];
+ const depthPrefix = '>'.repeat(depth);
+
+ // Parse properly nested <li> elements
+ let pos = 0;
+ while (pos < html.length) {
+ const liMatch =
html.substring(pos).match(/<li\s+class=['"]([^'"]*?)['"][^>]*>/);
+ if (!liMatch) break;
+
+ const fullLiStart = pos + liMatch.index;
+ const className = liMatch[1];
+ const liOpenEnd = fullLiStart + liMatch[0].length;
+
+ // Find the matching </li> tag, accounting for nested <li> elements
+ let liEnd = findMatchingLiClose(html, liOpenEnd);
+ if (liEnd === -1) {
+ // If no closing </li> found, take until next <li> or end
+ const nextLi =
html.substring(liOpenEnd).search(/<li\s+class=['"][^'"]*['"][^>]*>/);
+ liEnd = nextLi !== -1 ? liOpenEnd + nextLi : html.length;
+ }
+
+ const content = html.substring(liOpenEnd, liEnd).trim();
+
+ // Extract the main content before any nested <ul>
+ const ulIndex = content.indexOf('<ul');
+ const mainContent = ulIndex !== -1 ? content.substring(0,
ulIndex).trim() : content.trim();
+
+ // Process {@link} tags and convert to markdown links
+ const processedContent = processJavaTreeContent(mainContent);
+
+ // Map class names to custom elements
+ const elementType = mapClassToElement(className);
+
+ // Handle javatreec (condensed) lists
+ if (content.includes("class='javatreec'") ||
content.includes('class="javatreec"')) {
+ const condensedItems = extractCondensedItems(content);
+ if (condensedItems.length > 0) {
+ const condensedLine = depthPrefix + '>' +
condensedItems.join(' ');
+ lines.push(condensedLine);
+ pos = liEnd + 5; // Skip past </li>
+ continue;
+ }
+ }
+
+ // Add the main element
+
lines.push(`${depthPrefix}<${elementType}>${processedContent}</${elementType}>`);
+
+ // Process nested <ul> elements
+ const nestedUls = content.match(/<ul[^>]*>([\s\S]*?)<\/ul>/gi);
+ if (nestedUls) {
+ nestedUls.forEach(nestedUl => {
+ const nestedContent = nestedUl.replace(/^<ul[^>]*>/,
'').replace(/<\/ul>$/, '');
+ const nestedLines = parseJavaTreeToLines(nestedContent, depth
+ 1);
+ lines.push(...nestedLines);
+ });
+ }
+
+ pos = liEnd + 5; // Skip past </li>
+ }
+
+ return lines;
+}
+
+function findMatchingLiClose(html, startPos) {
+ let depth = 1;
+ let pos = startPos;
+
+ while (pos < html.length && depth > 0) {
+ const nextLiOpen = html.substring(pos).search(/<li[^>]*>/);
+ const nextLiClose = html.substring(pos).search(/<\/li>/);
+
+ if (nextLiClose === -1) return -1;
+
+ if (nextLiOpen !== -1 && nextLiOpen < nextLiClose) {
+ depth++;
+ pos += nextLiOpen + 4;
+ } else {
+ depth--;
+ if (depth === 0) {
+ return pos + nextLiClose;
+ }
+ pos += nextLiClose + 5;
+ }
+ }
+
+ return -1;
+}
+
+function mapClassToElement(className) {
+ const mapping = {
+ 'jac': 'java-abstract-class',
+ 'jc': 'javac-class',
+ 'jic': 'java-interface',
+ 'ja': 'java-annotation',
+ 'je': 'java-enum',
+ 'jm': 'java-method',
+ 'jmp': 'java-method-private',
+ 'jma': 'java-method-annotation',
+ 'jf': 'java-field',
+ 'jfp': 'java-field-private'
+ };
+
+ return mapping[className] || 'java-class';
+}
+
+function processJavaTreeContent(content) {
+ // Process {@link} tags
+ content = content.replace(/\{@link\s+([^}]+)\}/gi, (match, linkContent) =>
{
+ const parts = linkContent.split(/\s+/);
+ const target = parts[0];
+ const text = parts.slice(1).join(' ') || target.split('.').pop();
+
+ // Expand oaj abbreviation
+ const expandedTarget = target.replace(/^oaj\./, 'org.apache.juneau.');
+ const linkPath = expandedTarget.replace(/\./g, '/');
+
+ return `[${text}](../apidocs/${linkPath}.html)`;
+ });
+
+ // Process <c> tags (convert to backticks)
+ content = content.replace(/<c>(.*?)<\/c>/gi, '`$1`');
+
+ // Process <jk> tags (Java keywords)
+ content = content.replace(/<jk>(.*?)<\/jk>/gi, '$1');
+
+ // Clean up HTML entities
+ content = content.replace(/</g, '<').replace(/>/g,
'>').replace(/ /g, ' ');
+
+ // Remove extra whitespace
+ content = content.replace(/\s+/g, ' ').trim();
+
+ return content;
+}
+
+function extractCondensedItems(content) {
+ const items = [];
+ const javatreecMatch =
content.match(/<ul\s+class=['"]javatreec['"][^>]*>([\s\S]*?)<\/ul>/i);
+
+ if (javatreecMatch) {
+ const innerContent = javatreecMatch[1];
+ const liMatches =
innerContent.match(/<li\s+class=['"]([^'"]*?)['"][^>]*>([\s\S]*?)<\/li>/gi);
+
+ if (liMatches) {
+ liMatches.forEach(liMatch => {
+ const classMatch =
liMatch.match(/class=['"]([^'"]*?)['"][^>]*>/);
+ const contentMatch = liMatch.replace(/^<li[^>]*>/,
'').replace(/<\/li>$/, '');
+
+ if (classMatch) {
+ const className = classMatch[1];
+ const elementType = mapClassToElement(className);
+ const processedContent =
processJavaTreeContent(contentMatch);
+
items.push(`<${elementType}>${processedContent}</${elementType}>`);
+ }
+ });
+ }
+ }
+
+ return items;
+}
+
+function parseJavaTreeNode(html) {
+ const nodes = [];
+
+ // Clean up the HTML and normalize it
+ let normalizedHtml = html.trim();
+
+ // Split by <li> tags and process each
+ const liParts =
normalizedHtml.split(/<li\s+class=['"]([^'"]*?)['"][^>]*>/i);
+
+ // Skip the first empty part
+ for (let i = 1; i < liParts.length; i += 2) {
+ const className = liParts[i];
+ let content = liParts[i + 1] || '';
+
+ // Find the end of this li content (next <li> or end of string)
+ const nextLiIndex =
content.search(/<li\s+class=['"][^'"]*['"][^>]*>/i);
+ if (nextLiIndex !== -1) {
+ content = content.substring(0, nextLiIndex);
+ }
+
+ const node = parseJavaTreeItem(className, content);
+ if (node) {
+ nodes.push(node);
+ }
+ }
+
+ return nodes;
+}
+
+function parseJavaTreeItem(className, content) {
+ try {
+ // Extract the main text/link for this item
+ const { name, link, type } = extractNodeInfo(className, content);
+
+ const node = {
+ name: name,
+ type: type,
+ link: link
+ };
+
+ // Look for nested <ul> elements for children
+ const children = [];
+ const nestedUlPattern =
/<ul(?:\s+class=['"]([^'"]*?)['"])?[^>]*>([\s\S]*?)<\/ul>/gi;
+ let ulMatch;
+
+ while ((ulMatch = nestedUlPattern.exec(content)) !== null) {
+ const ulClass = ulMatch[1] || '';
+ const ulContent = ulMatch[2];
+
+ if (ulClass.includes('javatreec')) {
+ // This is a condensed children list
+ const condensedChildren = parseCondensedChildren(ulContent);
+ if (condensedChildren.length > 0) {
+ // Find the last child that can have condensed children
+ if (children.length > 0) {
+ const lastChild = children[children.length - 1];
+ lastChild.childrenCondensed = true;
+ lastChild.children = (lastChild.children ||
[]).concat(condensedChildren);
+ } else {
+ // Apply to current node
+ node.childrenCondensed = true;
+ node.children = (node.children ||
[]).concat(condensedChildren);
+ }
+ }
+ } else {
+ // Regular nested children
+ const nestedChildren = parseJavaTreeNode(ulContent);
+ children.push(...nestedChildren);
+ }
+ }
+
+ if (children.length > 0) {
+ node.children = children;
+ }
+
+ return node;
+
+ } catch (error) {
+ console.error('Error parsing Java tree item:', error);
+ return null;
+ }
+}
+
+function parseCondensedChildren(html) {
+ const children = [];
+ const liPattern = /<li\s+class=['"]([^'"]*?)['"][^>]*>([\s\S]*?)<\/li>/gi;
+ let match;
+
+ while ((match = liPattern.exec(html)) !== null) {
+ const className = match[1];
+ const content = match[2];
+
+ const { name, link, type } = extractNodeInfo(className, content);
+ children.push({
+ name: name,
+ type: type,
+ link: link
+ });
+ }
+
+ return children;
+}
+
+function extractNodeInfo(className, content) {
+ // Map CSS class to our type system
+ const typeMap = {
+ 'jac': 'java-abstract-class',
+ 'jc': 'java-class',
+ 'jic': 'java-interface',
+ 'ja': 'java-annotation',
+ 'je': 'java-enum',
+ 'jm': 'java-method',
+ 'jf': 'java-field',
+ 'jmp': 'java-private-method',
+ 'jfp': 'java-private-field',
+ 'jma': 'java-annotation-method'
+ };
+
+ const type = typeMap[className] || 'java-class';
+
+ // Extract the main content before any nested <ul> tags
+ const mainContent = content.split('<ul')[0].trim();
+
+ // Extract link and name from {@link} patterns
+ const linkPattern = /\{@link\s+([^}]+)\}/gi;
+ const linkMatch = linkPattern.exec(mainContent);
+
+ let name = '';
+ let link = '';
+
+ if (linkMatch) {
+ const linkTarget = linkMatch[1];
+
+ // Handle package abbreviations
+ let expandedTarget = linkTarget;
+ for (const [abbrev, fullPackage] of
Object.entries(packageAbbreviations)) {
+ expandedTarget = expandedTarget.replace(new
RegExp(`^${abbrev}\\.`, 'g'), `${fullPackage}.`);
+ }
+
+ // Extract class name and method
+ const parts = expandedTarget.split('#');
+ const classPath = parts[0];
+ const methodName = parts[1];
+
+ // Get the simple class name
+ const classSegments = classPath.split('.');
+ name = classSegments[classSegments.length - 1];
+
+ // If there's a method, format it properly
+ if (methodName) {
+ // Clean up method signature from content after the {@link}
+ const afterLink = mainContent.replace(/\{@link[^}]+\}/, '').trim();
+ const codeMatch = afterLink.match(/<c>(.*?)<\/c>/);
+ let returnType = codeMatch ? codeMatch[1] : '';
+
+ // Decode HTML entities in return type
+ returnType = returnType.replace(/</g, '<').replace(/>/g,
'>').replace(/&/g, '&');
+
+ // Extract the method signature (everything after the return type)
+ const methodText = afterLink.replace(/<c>.*?<\/c>/,
'').replace(/ /g, ' ').trim();
+ let methodSig = methodText || methodName;
+
+ // Decode HTML entities in method signature
+ methodSig = methodSig.replace(/</g, '<').replace(/>/g,
'>').replace(/&/g, '&');
+
+ if (returnType) {
+ name = `${returnType} ${methodSig}`;
+ } else {
+ name = methodSig;
+ }
+ }
+
+ // Convert to documentation link
+ const classPathWithSlashes = classPath.replace(/\./g, '/');
+ link = `../apidocs/${classPathWithSlashes}.html`;
+ if (methodName) {
+ // Clean up method name for anchor - just the method name without
params
+ const cleanMethodName = methodName.split('(')[0];
+ link += `#${cleanMethodName}`;
+ }
+ } else {
+ // Fallback: extract text content
+ name = mainContent.replace(/<[^>]*>/g, '').replace(/ /g, '
').replace(/\s+/g, ' ').trim();
+ // Decode HTML entities
+ name = name.replace(/</g, '<').replace(/>/g,
'>').replace(/&/g, '&');
+ }
+
+ return { name, link, type };
+}
+
+function generateClassHierarchyComponent(nodes) {
+ const indent = ' ';
+
+ function nodeToString(node, depth = 1) {
+ const baseIndent = indent.repeat(depth);
+ let result = `${baseIndent}{ name: "${escapeQuotes(node.name)}", type:
"${node.type}"`;
+
+ if (node.link) {
+ result += `, link: "${node.link}"`;
+ }
+
+ if (node.childrenCondensed) {
+ result += `, childrenCondensed: true`;
+ }
+
+ if (node.children && node.children.length > 0) {
+ result += `,\n${baseIndent} children: [\n`;
+
+ const childStrings = node.children.map(child =>
nodeToString(child, depth + 2));
+ result += childStrings.join(',\n');
+
+ result += `\n${baseIndent} ]`;
+ }
+
+ result += ' }';
+ return result;
+ }
+
+ const nodeStrings = nodes.map(node => nodeToString(node));
+
+ return `<ClassHierarchy nodes={[\n${nodeStrings.join(',\n')}\n]} />`;
+}
+
+function escapeQuotes(text) {
+ return text.replace(/"/g, '\\"').replace(/'/g, "\\'");
+}
+
function convertTables(content) {
// Convert HTML tables to Markdown tables
content = content.replace(/<table[^>]*>([\s\S]*?)<\/table>/gi, (match,
tableContent) => {
diff --git a/juneau-docs-poc/src/components/ClassHierarchy.module.css
b/juneau-docs-poc/src/components/ClassHierarchy.module.css
index c0b0511be..2a733b795 100644
--- a/juneau-docs-poc/src/components/ClassHierarchy.module.css
+++ b/juneau-docs-poc/src/components/ClassHierarchy.module.css
@@ -19,6 +19,8 @@
border-radius: 8px;
background: var(--ifm-color-emphasis-100);
padding: 1rem;
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
+ font-size: 14px;
}
.treeList {
@@ -29,9 +31,48 @@
.treeList .treeList {
padding-left: 1.5rem;
- margin-top: 0.5rem;
+ margin-top: 0.25rem;
border-left: 2px solid var(--ifm-color-emphasis-300);
margin-left: 1rem;
+ position: relative;
+}
+
+/* Tree connection lines */
+.treeList .treeList::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 10px;
+ border-left: 1px solid var(--ifm-color-emphasis-400);
+ height: 100%;
+}
+
+.treeNode::before {
+ content: '';
+ position: absolute;
+ top: 18px;
+ left: -15px;
+ border-top: 1px solid var(--ifm-color-emphasis-400);
+ width: 15px;
+}
+
+.treeNode::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: -15px;
+ border-left: 1px solid var(--ifm-color-emphasis-400);
+ height: 18px;
+}
+
+.treeNode:last-child::after {
+ height: 18px;
+}
+
+/* Remove lines for root level */
+.hierarchyContainer > .treeList > .treeNode::before,
+.hierarchyContainer > .treeList > .treeNode::after {
+ display: none;
}
.treeNode {
@@ -39,14 +80,24 @@
padding: 0.25rem 0;
display: flex;
align-items: flex-start;
- line-height: 1.4;
+ line-height: 1.0;
+ position: relative;
}
.icon {
margin-right: 0.5rem;
- font-size: 1rem;
+ font-size: 0.9rem;
flex-shrink: 0;
margin-top: 0.1rem;
+ font-weight: bold;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 1.2rem;
+ height: 1.2rem;
+ border-radius: 50%;
+ background: var(--ifm-color-emphasis-300);
+ color: var(--ifm-color-emphasis-900);
}
.nodeLink {
@@ -85,6 +136,11 @@
margin-left: -0.5rem;
}
+.interface .icon {
+ background: #2196f3;
+ color: white;
+}
+
.class {
background: rgba(76, 175, 80, 0.05);
border-left: 3px solid #4caf50;
@@ -92,6 +148,11 @@
margin-left: -0.5rem;
}
+.class .icon {
+ background: #4caf50;
+ color: white;
+}
+
.abstract {
background: rgba(255, 152, 0, 0.05);
border-left: 3px solid #ff9800;
@@ -99,6 +160,11 @@
margin-left: -0.5rem;
}
+.abstract .icon {
+ background: #ff9800;
+ color: white;
+}
+
.method {
background: rgba(156, 39, 176, 0.05);
border-left: 3px solid #9c27b0;
@@ -106,6 +172,11 @@
margin-left: -0.5rem;
}
+.method .icon {
+ background: #9c27b0;
+ color: white;
+}
+
.field {
background: rgba(63, 81, 181, 0.05);
border-left: 3px solid #3f51b5;
@@ -113,6 +184,76 @@
margin-left: -0.5rem;
}
+.field .icon {
+ background: #3f51b5;
+ color: white;
+}
+
+.annotation {
+ background: rgba(255, 193, 7, 0.05);
+ border-left: 3px solid #ffc107;
+ padding-left: 0.5rem;
+ margin-left: -0.5rem;
+}
+
+.annotation .icon {
+ background: #ffc107;
+ color: #333;
+}
+
+.enum {
+ background: rgba(121, 85, 72, 0.05);
+ border-left: 3px solid #795548;
+ padding-left: 0.5rem;
+ margin-left: -0.5rem;
+}
+
+.enum .icon {
+ background: #795548;
+ color: white;
+}
+
+.privateMethod {
+ background: rgba(156, 39, 176, 0.03);
+ border-left: 3px solid #9c27b0;
+ padding-left: 0.5rem;
+ margin-left: -0.5rem;
+ opacity: 0.7;
+}
+
+.privateMethod .icon {
+ background: #9c27b0;
+ color: white;
+ opacity: 0.8;
+}
+
+.privateField {
+ background: rgba(63, 81, 181, 0.03);
+ border-left: 3px solid #3f51b5;
+ padding-left: 0.5rem;
+ margin-left: -0.5rem;
+ opacity: 0.7;
+}
+
+.privateField .icon {
+ background: #3f51b5;
+ color: white;
+ opacity: 0.8;
+}
+
+.annotationMethod {
+ background: rgba(255, 193, 7, 0.03);
+ border-left: 3px solid #ffc107;
+ padding-left: 0.5rem;
+ margin-left: -0.5rem;
+}
+
+.annotationMethod .icon {
+ background: #ffc107;
+ color: #333;
+ opacity: 0.8;
+}
+
/* Dark theme adjustments */
[data-theme='dark'] .hierarchyContainer {
background: var(--ifm-color-emphasis-200);
@@ -123,10 +264,21 @@
border-left-color: var(--ifm-color-emphasis-400);
}
+[data-theme='dark'] .treeList .treeList::before,
+[data-theme='dark'] .treeNode::before,
+[data-theme='dark'] .treeNode::after {
+ border-color: var(--ifm-color-emphasis-500);
+}
+
[data-theme='dark'] .description {
color: var(--ifm-color-emphasis-600);
}
+[data-theme='dark'] .icon {
+ background: var(--ifm-color-emphasis-400);
+ color: var(--ifm-color-emphasis-100);
+}
+
/* Responsive adjustments */
@media (max-width: 768px) {
.treeList .treeList {
@@ -141,6 +293,6 @@
.description {
display: block;
margin-left: 1.5rem;
- margin-top: 0.25rem;
+ margin-top: 0.125rem;
}
}
diff --git a/juneau-docs-poc/src/components/ClassHierarchy.tsx
b/juneau-docs-poc/src/components/ClassHierarchy.tsx
index 7dc4a4007..01cb66bce 100644
--- a/juneau-docs-poc/src/components/ClassHierarchy.tsx
+++ b/juneau-docs-poc/src/components/ClassHierarchy.tsx
@@ -12,14 +12,15 @@
*/
import React from 'react';
-import styles from './ClassHierarchy.module.css';
interface ClassNode {
name: string;
- type: 'interface' | 'class' | 'abstract' | 'method' | 'field' | 'annotation'
| 'enum' | 'private-method' | 'private-field' | 'annotation-method';
+ type: 'interface' | 'class' | 'abstract' | 'method' | 'field' | 'annotation'
| 'enum' | 'private-method' | 'private-field' | 'annotation-method' |
+ 'java-interface' | 'java-class' | 'java-abstract-class' |
'java-method' | 'java-field' | 'java-annotation' | 'java-enum' |
'java-private-method' | 'java-private-field' | 'java-annotation-method';
link?: string;
description?: string;
children?: ClassNode[];
+ childrenCondensed?: boolean;
}
interface ClassHierarchyProps {
@@ -29,34 +30,72 @@ interface ClassHierarchyProps {
const getCssClass = (type: string) => {
switch (type) {
case 'interface':
+ case 'java-interface':
return 'jic'; // Java interface
case 'class':
+ case 'java-class':
return 'jc'; // Java class
case 'abstract':
+ case 'java-abstract-class':
return 'jac'; // Java abstract class
case 'method':
+ case 'java-method':
return 'jm'; // Java method
case 'field':
+ case 'java-field':
return 'jf'; // Java field
case 'annotation':
+ case 'java-annotation':
return 'ja'; // Java annotation
case 'enum':
+ case 'java-enum':
return 'je'; // Java enum
case 'private-method':
+ case 'java-private-method':
return 'jmp'; // Java private method
case 'private-field':
+ case 'java-private-field':
return 'jfp'; // Java private field
case 'annotation-method':
+ case 'java-annotation-method':
return 'jma'; // Java annotation method
default:
return 'jc';
}
};
+const getTypeIcon = (type: string) => {
+ switch (type) {
+ case 'interface':
+ return '\u24d8'; // ⓘ
+ case 'class':
+ return '\u24d2'; // ⓒ
+ case 'abstract':
+ return '\u24d2'; // ⓒ (same as class but different color)
+ case 'method':
+ return '\u25cf'; // ●
+ case 'field':
+ return '\u25cf'; // ●
+ case 'annotation':
+ return '\u24d0'; // ⓐ
+ case 'enum':
+ return '\u24d4'; // ⓔ
+ case 'private-method':
+ return '\u25c6'; // ◆
+ case 'private-field':
+ return '\u25cf'; // ●
+ case 'annotation-method':
+ return '\u25cf'; // ●
+ default:
+ return '\u24d2'; // ⓒ
+ }
+};
+
const ClassTreeNode: React.FC<{ node: ClassNode; level: number }> = ({ node,
level }) => {
- const cssClass = getCssClass(node.type);
+ const typeClass = getCssClass(node.type);
+
return (
- <li className={cssClass}>
+ <li className={typeClass}>
{node.link ? (
<a href={node.link}>
{node.name}
@@ -68,7 +107,7 @@ const ClassTreeNode: React.FC<{ node: ClassNode; level:
number }> = ({ node, lev
<span> - {node.description}</span>
)}
{node.children && node.children.length > 0 && (
- <ul>
+ <ul className={node.childrenCondensed ? 'condensed' : ''}>
{node.children.map((child, index) => (
<ClassTreeNode key={index} node={child} level={level + 1} />
))}
@@ -80,13 +119,11 @@ const ClassTreeNode: React.FC<{ node: ClassNode; level:
number }> = ({ node, lev
export const ClassHierarchy: React.FC<ClassHierarchyProps> = ({ nodes }) => {
return (
- <div className="javatreec">
- <ul>
- {nodes.map((node, index) => (
- <ClassTreeNode key={index} node={node} level={0} />
- ))}
- </ul>
- </div>
+ <ul className="javatreec">
+ {nodes.map((node, index) => (
+ <ClassTreeNode key={index} node={node} level={0} />
+ ))}
+ </ul>
);
};
diff --git a/juneau-docs-poc/src/css/custom.css
b/juneau-docs-poc/src/css/custom.css
index d1c2167ed..9986a06b3 100644
--- a/juneau-docs-poc/src/css/custom.css
+++ b/juneau-docs-poc/src/css/custom.css
@@ -347,94 +347,50 @@ a[href*="apidocs"]:hover {
margin-top: 0;
}
-/* Java Tree styling - using original Juneau icons */
-.java-tree, .javatreec {
- background: var(--ifm-color-emphasis-100);
- border: 1px solid var(--ifm-color-emphasis-300);
- border-radius: 8px;
- padding: 1rem 1.5rem;
- margin: 1.5rem 0;
- max-width: 900px;
-}
+/* Java Tree CSS - Original Juneau styling */
-.java-tree ul, .javatreec ul {
- padding-left: 0px;
- margin: 0px;
- max-width: 900px;
- margin-left: 1.5rem;
- border-left: 2px solid var(--ifm-color-emphasis-300);
- padding-left: 1rem;
+/* Documentation Tree - from original juneau-doc.css */
+.doctree li, .javatree li, .seealso>li, .notes>li, .values>li, .format>li {
+ max-width: 800px;
+ margin-top: 0px;
+ list-style: none;
}
-
-.java-tree li, .javatreec li {
- display: inline-block;
- padding-left: 5px;
- margin: 0.5rem 0;
- line-height: 1.4;
- width: 100%;
+.doctree>li, .seealso>li {
+ margin-bottom: 10px;
}
-
-.java-tree li::before, .javatreec li::before {
- font-weight: bolder;
- font-size: x-small;
-}
-
-/* Java element type icons */
-/* Larger icons for class/interface/annotation/enum */
-.java-tree li.ja::before, .javatreec li.ja::before { color: #00ced1; content:
'\00a0\00a0\24d0\00a0'; font-size: medium; font-weight: bold; } /* Java
annotation */
-.java-tree li.jc::before, .javatreec li.jc::before { color: rgb(76, 107, 135);
content: '\00a0\00a0\24d2\00a0'; font-size: medium; font-weight: bold; } /*
Java class */
-.java-tree li.jac::before, .javatreec li.jac::before { color: #eed304;
content: '\00a0\00a0\24d2\00a0'; font-size: medium; font-weight: bold; } /*
Java abstract class */
-.java-tree li.jic::before, .javatreec li.jic::before { color: #5f4ba2;
content: '\00a0\00a0\24d8\00a0'; font-size: medium; font-weight: bold; } /*
Java interface */
-.java-tree li.je::before, .javatreec li.je::before { color: #906029; content:
'\00a0\00a0\24d4\00a0'; font-size: medium; font-weight: bold; } /* Java enum */
-
-/* Smaller icons for methods/fields */
-.java-tree li.jf::before, .javatreec li.jf::before { color: rgb(76, 107, 135);
content: '\00a0\00a0\25cf\00a0'; } /* Java field */
-.java-tree li.jfp::before, .javatreec li.jfp::before { color: #eed304;
content: '\00a0\00a0\25cf\00a0'; } /* Java private field */
-.java-tree li.jm::before, .javatreec li.jm::before { color: rgb(76, 107, 135);
content: '\00a0\00a0\25cf\00a0'; } /* Java method */
-.java-tree li.jmp::before, .javatreec li.jmp::before { color: #eed304;
content: '\00a0\00a0\25c6\00a0'; } /* Java private method */
-.java-tree li.jma::before, .javatreec li.jma::before { color: #00ced1;
content: '\00a0\00a0\25cf\00a0'; } /* Java annotation method */
-
-/* List markers for better compatibility */
-.java-tree li.jc::marker, .javatreec li.jc::marker { font-weight: bolder;
font-size: small; color: #008000; content: '\00a0\00a0\24d2\00a0\00a0'; }
-.java-tree li.jac::marker, .javatreec li.jac::marker { font-weight: bolder;
font-size: small; color: #eed304; content: '\00a0\00a0\24d2\00a0\00a0'; }
-.java-tree li.jic::marker, .javatreec li.jic::marker { font-weight: bolder;
font-size: small; color: #5f4ba2; content: '\00a0\00a0\24d8\00a0\00a0'; }
-.java-tree li.ja::marker, .javatreec li.ja::marker { font-weight: bolder;
font-size: small; color: #00ced1; content: '\00a0\00a0\24d0\00a0\00a0'; }
-.java-tree li.je::marker, .javatreec li.je::marker { font-weight: bolder;
font-size: small; color: #906029; content: '\00a0\00a0\24d4\00a0\00a0'; }
-.java-tree li.jm::marker, .javatreec li.jm::marker { font-weight: bolder;
font-size: small; color: #008000; content: '\00a0\00a0\25cf\00a0\00a0'; }
-.java-tree li.jf::marker, .javatreec li.jf::marker { font-weight: bolder;
font-size: small; color: #008000; content: '\00a0\00a0\25cf\00a0\00a0'; }
-.java-tree li.jp::marker, .javatreec li.jp::marker { font-weight: bolder;
font-size: small; color: #e09c01; content: '\00a0\00a0\229e\00a0\00a0'; }
-.java-tree li.jmp::marker, .javatreec li.jmp::marker { font-weight: bolder;
font-size: small; color: #eed304; content: '\00a0\00a0\25c6\00a0\00a0'; }
-.java-tree li.jma::marker, .javatreec li.jma::marker { font-weight: bolder;
font-size: small; color: #00ced1; content: '\00a0\00a0\25cf\00a0\00a0'; }
-
-.java-tree code {
- background: none;
- border: none;
- padding: 0;
- color: var(--ifm-color-primary);
+.doctree li, .seealso li {
+ margin-top: 5px;
}
-
-.java-tree a {
- color: rgb(76, 107, 135);
- text-decoration: none;
- border-bottom: 1px dotted rgb(76, 107, 135);
+.doctree ul, .seealso ul {
+ padding: 0px 0px 0px 15px;
+ margin-top: -2px;
+ margin-bottom: -2px;
}
-
-.java-tree a:hover {
- color: rgb(60, 85, 108);
- border-bottom: 1px solid rgb(60, 85, 108);
- background: rgba(76, 107, 135, 0.05);
- border-radius: 3px;
- padding: 1px 3px;
+.javatree>li {
+ margin-bottom: 1px;
}
-
-/* Dark theme for java-tree */
-[data-theme='dark'] .java-tree, [data-theme='dark'] .javatreec {
- background: var(--ifm-color-emphasis-200);
- border-color: var(--ifm-color-emphasis-400);
+.javatree li {
+ margin-top: 1px;
+}
+.javatree ul {
+ padding: 0px 0px 0px 20px;
+ margin-top: 0px;
+ margin-bottom: 0px;
}
-[data-theme='dark'] .java-tree ul, [data-theme='dark'] .javatreec ul {
- border-left-color: var(--ifm-color-emphasis-400);
+/* Compressed/condensed Java tree - from original juneau-doc.css */
+ul.javatreec, .javatreec ul {
+ padding-left: 0px;
+ margin: 0px;
+ max-width: 900px;
+}
+.javatreec li {
+ display: inline-block;
+ padding-left: 5px;
+}
+.javatreec li::before {
+ font-weight: bolder;
+ font-size: x-small;
}
/* Responsive adjustments */
@@ -446,9 +402,48 @@ a[href*="apidocs"]:hover {
.feature-grid {
grid-template-columns: 1fr;
}
-
- .java-tree ul {
- margin-left: 1rem;
- padding-left: 0.75rem;
- }
-}
\ No newline at end of file
+}
+
+javac-annotation,
+javac-class,
+javac-abstract-class,
+javac-interface,
+javac-enum,
+javac-field,
+javac-field-private,
+javac-method,
+javac-method-private,
+javac-method-annotation { font: 'Lucida Console'; font-size: small; }
+
+java-annotation,
+java-class,
+java-abstract-class,
+java-interface,
+java-enum,
+java-field,
+java-field-private,
+java-method,
+java-method-private,
+java-method-annotation { font: 'Lucida Console';}
+
+javac-annotation::before { color: #00ced1; content: '\24d0\00a0';
font-weight: bolder; font-size: x-small; }
+javac-class::before { color: #008000; content: '\24d2\00a0'; font-weight:
bolder; font-size: x-small; }
+javac-abstract-class::before { color: #CCB404; content: '\24d2\00a0';
font-weight: bolder; font-size: x-small; }
+javac-interface::before { color: #5f4ba2; content: '\24d8\00a0'; font-weight:
bolder; font-size: x-small; }
+javac-enum::before { color: #906029; content: '\24d4\00a0'; font-weight:
bolder; font-size: x-small; }
+javac-field::before { color: #008000; content: '\25cf\00a0'; font-weight:
bolder; font-size: x-small; }
+javac-field-private::before { color: #CCB404; content: '\25cf\00a0';
font-weight: bolder; font-size: x-small; }
+javac-method::before { color: #008000; content: '\25cf\00a0'; font-weight:
bolder; font-size: x-small; }
+javac-method-private::before { color: #CCB404; content: '\25c6\00a0';
font-weight: bolder; font-size: x-small; }
+javac-method-annotation::before { color: #00ced1; content: '\25cf\00a0';
font-weight: bolder; font-size: x-small; }
+
+java-annotation::before { color: #00ced1; content: '\24d0\00a0\00a0';
font-weight: bolder; font-size: large; }
+java-class::before { color: #008000; content: '\24d2\00a0\00a0'; font-weight:
bolder; font-size: large; }
+java-abstract-class::before { color: #CCB404; content: '\24d2\00a0\00a0';
font-weight: bolder; font-size: large; }
+java-interface::before { color: #5f4ba2; content: '\24d8\00a0\00a0';
font-weight: bolder; font-size: large; }
+java-enum::before { color: #906029; content: '\24d4\00a0\00a0'; font-weight:
bolder; font-size: large; }
+java-field::before { color: #008000; content: '\25cf\00a0\00a0'; font-weight:
bolder; font-size: x-small; }
+java-field-private::before { color: #CCB404; content: '\25cf\00a0\00a0';
font-weight: bolder; font-size: x-small; }
+java-method::before { color: #008000; content: '\25cf\00a0\00a0';
font-weight: bolder; font-size: x-small; }
+java-method-private::before { color: #CCB404; content: '\25c6\00a0\00a0';
font-weight: bolder; font-size: x-small; }
+java-method-annotation::before { color: #00ced1; content: '\25cf\00a0\00a0';
font-weight: bolder; font-size: x-small; }