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 898f604ec Update new docs
898f604ec is described below
commit 898f604ec28dbf0d5be9d3fe79a46a7d40d06053
Author: James Bognar <[email protected]>
AuthorDate: Wed Sep 17 06:55:07 2025 -0400
Update new docs
---
juneau-docs-poc/docs/topics/02.11.02.AutoSwaps.md | 6 +-
.../02.12.00.DynamicallyAppliedAnnotations.md | 42 ++-
.../docs/topics/02.13.00.BeanDictionaries.md | 16 +-
.../topics/02.16.00.ParsingIntoGenericModels.md | 11 +-
.../topics/02.17.00.ReadingContinuousStreams.md | 14 +-
.../docs/topics/02.18.00.MarshallingUris.md | 20 +-
.../docs/topics/02.20.00.PojoCategories.md | 365 +++++++++++++-----
.../docs/topics/02.21.00.SimpleVariableLanguage.md | 13 +-
juneau-docs-poc/sidebars.ts | 414 ++++++---------------
9 files changed, 437 insertions(+), 464 deletions(-)
diff --git a/juneau-docs-poc/docs/topics/02.11.02.AutoSwaps.md
b/juneau-docs-poc/docs/topics/02.11.02.AutoSwaps.md
index 545505b48..38e47c302 100644
--- a/juneau-docs-poc/docs/topics/02.11.02.AutoSwaps.md
+++ b/juneau-docs-poc/docs/topics/02.11.02.AutoSwaps.md
@@ -69,7 +69,6 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*;
/**
* A simple HTML form template whose serialized form is an HTML5 Form object.
-
*/
public class FormTemplate {
@@ -95,9 +94,7 @@ public class FormTemplate {
```
Swapped objects can be converted back into their original form by the parsers
by specifying one of the following methods:
-- `public static T unswap(BeanSession, X)` method where `X` is the
-
-swap class type.
+- `public static T unswap(BeanSession, X)` method where `X` is the swap class
type.
- `public T(X)` constructor where `X` is the swap class type.
The following shows how our form template class can be modified to allow the
parsers to reconstruct our original object:
@@ -108,7 +105,6 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*;
/**
* A simple HTML form template whose serialized form is an HTML5 Form object.
* This time with parsing support.
-
*/
@Bean(dictionary=HtmlBeanDictionary.class)
public class FormTemplate {
diff --git
a/juneau-docs-poc/docs/topics/02.12.00.DynamicallyAppliedAnnotations.md
b/juneau-docs-poc/docs/topics/02.12.00.DynamicallyAppliedAnnotations.md
index a59bcea34..dd33d5f87 100644
--- a/juneau-docs-poc/docs/topics/02.12.00.DynamicallyAppliedAnnotations.md
+++ b/juneau-docs-poc/docs/topics/02.12.00.DynamicallyAppliedAnnotations.md
@@ -41,26 +41,28 @@ public List getAddresses() {}
Any Juneau annotation that has an `on()/onClass()` method can be applied
dynamically this way.
These include:
-<java-annotation>[Bean]({{API_DOCS}}/org/apache/juneau/annotation/Bean.html)</java-annotation>
-<java-annotation>[Beanc]({{API_DOCS}}/org/apache/juneau/annotation/Beanc.html)</java-annotation>
-<java-annotation>[BeanIgnore]({{API_DOCS}}/org/apache/juneau/annotation/BeanIgnore.html)</java-annotation>
-<java-annotation>[Beanp]({{API_DOCS}}/org/apache/juneau/annotation/Beanp.html)</java-annotation>
-<java-annotation>[Example]({{API_DOCS}}/org/apache/juneau/annotation/Example.html)</java-annotation>
-<java-annotation>[NameProperty]({{API_DOCS}}/org/apache/juneau/annotation/NameProperty.html)</java-annotation>
-<java-annotation>[ParentProperty]({{API_DOCS}}/org/apache/juneau/annotation/ParentProperty.html)</java-annotation>
-<java-annotation>[Swap]({{API_DOCS}}/org/apache/juneau/annotation/Swap.html)</java-annotation>
-<java-annotation>[Uri]({{API_DOCS}}/org/apache/juneau/annotation/Uri.html)</java-annotation>
-<java-annotation>[Csv]({{API_DOCS}}/org/apache/juneau/csv/annotation/Csv.html)</java-annotation>
-<java-annotation>[Html]({{API_DOCS}}/org/apache/juneau/html/annotation/Html.html)</java-annotation>
-<java-annotation>[Json]({{API_DOCS}}/org/apache/juneau/json/annotation/Json.html)</java-annotation>
-<java-annotation>[Schema]({{API_DOCS}}/org/apache/juneau/annotation/Schema.html)</java-annotation>
-<java-annotation>[MsgPack]({{API_DOCS}}/org/apache/juneau/msgpack/annotation/MsgPack.html)</java-annotation>
-<java-annotation>[OpenApi]({{API_DOCS}}/org/apache/juneau/oapi/annotation/OpenApi.html)</java-annotation>
-<java-annotation>[PlainText]({{API_DOCS}}/org/apache/juneau/plaintext/annotation/PlainText.html)</java-annotation>
-<java-annotation>[SoapXml]({{API_DOCS}}/org/apache/juneau/soap/annotation/SoapXml.html)</java-annotation>
-<java-annotation>[Uon]({{API_DOCS}}/org/apache/juneau/uon/annotation/Uon.html)</java-annotation>
-<java-annotation>[UrlEncoding]({{API_DOCS}}/org/apache/juneau/urlencoding/annotation/UrlEncoding.html)</java-annotation>
-<java-annotation>[Xml]({{API_DOCS}}/org/apache/juneau/xml/annotation/Xml.html)</java-annotation>
+<tree>
+<java-annotation>[Bean]({{API_DOCS}}/org/apache/juneau/annotation/Bean.html)</java-annotation>
+<java-annotation>[Beanc]({{API_DOCS}}/org/apache/juneau/annotation/Beanc.html)</java-annotation>
+<java-annotation>[BeanIgnore]({{API_DOCS}}/org/apache/juneau/annotation/BeanIgnore.html)</java-annotation>
+<java-annotation>[Beanp]({{API_DOCS}}/org/apache/juneau/annotation/Beanp.html)</java-annotation>
+<java-annotation>[Example]({{API_DOCS}}/org/apache/juneau/annotation/Example.html)</java-annotation>
+<java-annotation>[NameProperty]({{API_DOCS}}/org/apache/juneau/annotation/NameProperty.html)</java-annotation>
+<java-annotation>[ParentProperty]({{API_DOCS}}/org/apache/juneau/annotation/ParentProperty.html)</java-annotation>
+<java-annotation>[Swap]({{API_DOCS}}/org/apache/juneau/annotation/Swap.html)</java-annotation>
+<java-annotation>[Uri]({{API_DOCS}}/org/apache/juneau/annotation/Uri.html)</java-annotation>
+<java-annotation>[Csv]({{API_DOCS}}/org/apache/juneau/csv/annotation/Csv.html)</java-annotation>
+<java-annotation>[Html]({{API_DOCS}}/org/apache/juneau/html/annotation/Html.html)</java-annotation>
+<java-annotation>[Json]({{API_DOCS}}/org/apache/juneau/json/annotation/Json.html)</java-annotation>
+<java-annotation>[Schema]({{API_DOCS}}/org/apache/juneau/annotation/Schema.html)</java-annotation>
+<java-annotation>[MsgPack]({{API_DOCS}}/org/apache/juneau/msgpack/annotation/MsgPack.html)</java-annotation>
+<java-annotation>[OpenApi]({{API_DOCS}}/org/apache/juneau/oapi/annotation/OpenApi.html)</java-annotation>
+<java-annotation>[PlainText]({{API_DOCS}}/org/apache/juneau/plaintext/annotation/PlainText.html)</java-annotation>
+<java-annotation>[SoapXml]({{API_DOCS}}/org/apache/juneau/soap/annotation/SoapXml.html)</java-annotation>
+<java-annotation>[Uon]({{API_DOCS}}/org/apache/juneau/uon/annotation/Uon.html)</java-annotation>
+<java-annotation>[UrlEncoding]({{API_DOCS}}/org/apache/juneau/urlencoding/annotation/UrlEncoding.html)</java-annotation>
+<java-annotation>[Xml]({{API_DOCS}}/org/apache/juneau/xml/annotation/Xml.html)</java-annotation>
+</tree>
The valid pattern matches are:
- Classes:
diff --git a/juneau-docs-poc/docs/topics/02.13.00.BeanDictionaries.md
b/juneau-docs-poc/docs/topics/02.13.00.BeanDictionaries.md
index 5d78506ee..78b3c8d43 100644
--- a/juneau-docs-poc/docs/topics/02.13.00.BeanDictionaries.md
+++ b/juneau-docs-poc/docs/topics/02.13.00.BeanDictionaries.md
@@ -48,21 +48,21 @@ This allows the `typeName` annotation to be used as a
shortcut for defining elem
When serialized as XML, the bean is rendered as:
```xml
-<foo>
- <x>
- <bar/>
- <baz/>
- </x>
-</foo>
+<foo>
+ <x>
+ <bar/>
+ <baz/>
+ </x>
+</foo>
```
Bean dictionaries are registered through the following:
<tree>
<java-annotation>[Beanp]({{API_DOCS}}/org/apache/juneau/annotation/Beanp.html)</java-annotation>
-<node-1><java-method>[dictionary]({{API_DOCS}}/org/apache/juneau/annotation/Beanp.html#dictionary())</java-method></node-1>
+<node-1><java-method-annotation>[dictionary]({{API_DOCS}}/org/apache/juneau/annotation/Beanp.html#dictionary())</java-method-annotation></node-1>
<java-annotation>[Bean]({{API_DOCS}}/org/apache/juneau/annotation/Bean.html)</java-annotation>
-<node-1><java-method>[dictionary]({{API_DOCS}}/org/apache/juneau/annotation/Bean.html#dictionary())</java-method></node-1>
+<node-1><java-method-annotation>[dictionary]({{API_DOCS}}/org/apache/juneau/annotation/Bean.html#dictionary())</java-method-annotation></node-1>
<java-class>[BeanContext.Builder]({{API_DOCS}}/org/apache/juneau/BeanContext/Builder.html)</java-class>
<node-1><java-method>[beanDictionary(Class...)](TODO.md)</java-method></node-1>
</tree>
diff --git a/juneau-docs-poc/docs/topics/02.16.00.ParsingIntoGenericModels.md
b/juneau-docs-poc/docs/topics/02.16.00.ParsingIntoGenericModels.md
index b6361085a..c8527073c 100644
--- a/juneau-docs-poc/docs/topics/02.16.00.ParsingIntoGenericModels.md
+++ b/juneau-docs-poc/docs/topics/02.16.00.ParsingIntoGenericModels.md
@@ -4,13 +4,11 @@ title: "Parsing into Generic Models"
The Juneau parsers are not limited to parsing back into the original bean
classes.
If the bean classes are not available on the parsing side, the parser can also
be used to parse into a generic model consisting of `Maps`, `Collections`, and
primitive objects.
-You can parse into any `Map` type (e.g.
-`HashMap`, `TreeMap`) but using
[JsonMap]({{API_DOCS}}/org/apache/juneau/collections/JsonMap.html) is
recommended since it has many convenience methods for converting values to
various types.
+You can parse into any `Map` type (e.g. `HashMap`, `TreeMap`) but using
[JsonMap]({{API_DOCS}}/org/apache/juneau/collections/JsonMap.html) is
recommended since it has many convenience methods for converting values to
various types.
The same is true when parsing collections.
-You can use any Collection (e.g.
-`HashSet`, `LinkedList`) or array (e.g.
-`Object[]`, `String[]`, `String[][]`) but using
[JsonList]({{API_DOCS}}/org/apache/juneau/collections/JsonList.html) is
recommended.
+You can use any Collection (e.g. `HashSet`, `LinkedList`) or array (e.g.
`Object[]`, `String[]`, `String[][]`) but using
[JsonList]({{API_DOCS}}/org/apache/juneau/collections/JsonList.html) is
recommended.
When the map or list type is not specified, or is the abstract `Map`,
`Collection`, or `List` types, the parser will use `JsonMap` and `JsonList` by
default.
+
For example, given the following JSON:
```json
@@ -35,7 +33,6 @@ For example, given the following JSON:
}
```
-
We can parse this into a generic `JsonMap`:
```java
@@ -46,7 +43,6 @@ JsonMap map = Json.to(json, JsonMap.class);
String json = Json5.of(map);
```
-
What we end up with is the exact same output.
Even the numbers and booleans are preserved because they are parsed into
`Number` and `Boolean` objects when parsing into generic models.
@@ -72,7 +68,6 @@ Even the numbers and booleans are preserved because they are
parsed into `Number
}
```
-
Once parsed into a generic model, various convenience methods are provided on
the `JsonMap` and `JsonList` classes to retrieve values:
```java
diff --git a/juneau-docs-poc/docs/topics/02.17.00.ReadingContinuousStreams.md
b/juneau-docs-poc/docs/topics/02.17.00.ReadingContinuousStreams.md
index c85c74bdc..18f59df21 100644
--- a/juneau-docs-poc/docs/topics/02.17.00.ReadingContinuousStreams.md
+++ b/juneau-docs-poc/docs/topics/02.17.00.ReadingContinuousStreams.md
@@ -4,9 +4,11 @@ title: "Reading Continuous Streams"
The following parsers can be configured to read continuous streams of objects
from the same input stream:
-<java-class>[JsonParser]({{API_DOCS}}/org/apache/juneau/json/JsonParser.html)</java-class>
-<java-class>[UonParser]({{API_DOCS}}/org/apache/juneau/uon/UonParser.html)</java-class>
-<java-class>[MsgPackParser]({{API_DOCS}}/org/apache/juneau/msgpack/MsgPackParser.html)</java-class>
+<tree>
+<java-class>[JsonParser]({{API_DOCS}}/org/apache/juneau/json/JsonParser.html)</java-class>
+<java-class>[UonParser]({{API_DOCS}}/org/apache/juneau/uon/UonParser.html)</java-class>
+<java-class>[MsgPackParser]({{API_DOCS}}/org/apache/juneau/msgpack/MsgPackParser.html)</java-class>
+</tree>
The [JsonParser]({{API_DOCS}}/org/apache/juneau/json/JsonParser.html) and
[UonParser]({{API_DOCS}}/org/apache/juneau/uon/UonParser.html) classes can read
continuous streams by using the
[Builder#unbuffered()]({{API_DOCS}}/org/apache/juneau/parser/Parser/Builder.html#unbuffered())
setting.
This prevents the parsers from using an internal buffer that would read past
the end of the currently parsed POJO.
@@ -30,8 +32,7 @@ pojo = session.parse(reader, int[].class); // [456]
:::
-Note that this isn't perfect in all cases since you can't combine two JSON
numbers into a single reader (e.g.
-`"123" + "456" = "123456"`).
+Note that this isn't perfect in all cases since you can't combine two JSON
numbers into a single reader (e.g. `"123" + "456" = "123456"`).
:::note
For obvious reasons, do not use the following properties when reading
continuous streams:
@@ -45,5 +46,6 @@ For obvious reasons, do not use the following properties when
reading continuous
</tree>
:::
+:::note
The [MsgPackParser]({{API_DOCS}}/org/apache/juneau/msgpack/MsgPackParser.html)
class doesn't use any internal buffering to begin with, so it can be used with
continuous streams without any special properties.
-
+:::
diff --git a/juneau-docs-poc/docs/topics/02.18.00.MarshallingUris.md
b/juneau-docs-poc/docs/topics/02.18.00.MarshallingUris.md
index 45b1040d2..8a3a8fac8 100644
--- a/juneau-docs-poc/docs/topics/02.18.00.MarshallingUris.md
+++ b/juneau-docs-poc/docs/topics/02.18.00.MarshallingUris.md
@@ -3,6 +3,7 @@ title: "URIs"
---
Juneau serializers have sophisticated support for transforming relative URIs
to absolute form.
+
The following example shows a bean containing URIs of various forms and how
they end up serialized.
```java
@@ -70,14 +71,17 @@ String json = serializer.serialize(new TestURIs());
```
URI resolution is controlled by the following settings:
--
[Builder#uriContext(UriContext)]({{API_DOCS}}/org/apache/juneau/serializer/Serializer/Builder.html#uriContext(UriContext))
- Setting that defines the URI contextual information used to resolve relative
URIs.
--
[Builder#uriRelativity(UriRelativity)]({{API_DOCS}}/org/apache/juneau/serializer/Serializer/Builder.html#uriRelativity(UriRelativity))
- Setting that defines how relative URIs should be interpreted. Possible
values:
- -
[UriRelativity#RESOURCE]({{API_DOCS}}/org/apache/juneau/UriRelativity.html#RESOURCE)
- Relative URIs should be considered relative to the servlet URI. (e.g.
`http://host:port/context-root/servlet-path`).
- -
[UriRelativity#PATH_INFO]({{API_DOCS}}/org/apache/juneau/UriRelativity.html#PATH_INFO)
- Relative URIs should be considered relative to the request URI. (e.g.
`http://host:port/context-root/servlet-path/path-info`).
--
[Builder#uriResolution(UriResolution)]({{API_DOCS}}/org/apache/juneau/serializer/Serializer/Builder.html#uriResolution(UriResolution))
- Setting that defines the final format of serialized URIs. Possible values:
- -
[UriResolution#ABSOLUTE]({{API_DOCS}}/org/apache/juneau/UriResolution.html#ABSOLUTE)
- Resolve to an absolute URL. (e.g.
`http://host:port/context-root/servlet-path/path-info`).
- -
[UriResolution#ROOT_RELATIVE]({{API_DOCS}}/org/apache/juneau/UriResolution.html#ROOT_RELATIVE)
- Resolve to a root-relative URL. (e.g.
"/context-root/servlet-path/path-info").
- -
[UriResolution#NONE]({{API_DOCS}}/org/apache/juneau/UriResolution.html#NONE) -
Don't do any URL resolution.
+
+<tree>
+<java-method>[Builder#uriContext(UriContext)]({{API_DOCS}}/org/apache/juneau/serializer/Serializer/Builder.html#uriContext(UriContext))
- Setting that defines the URI contextual information used to resolve relative
URIs.</java-method>
+<java-method>[Builder#uriRelativity(UriRelativity)]({{API_DOCS}}/org/apache/juneau/serializer/Serializer/Builder.html#uriRelativity(UriRelativity))
- Setting that defines how relative URIs should be interpreted. Possible
values:</java-method>
+<node-1><java-field>[UriRelativity#RESOURCE]({{API_DOCS}}/org/apache/juneau/UriRelativity.html#RESOURCE)
- Relative URIs should be considered relative to the servlet URI. (e.g.
`http://host:port/context-root/servlet-path`).</java-field></node-1>
+<node-1><java-field>[UriRelativity#PATH_INFO]({{API_DOCS}}/org/apache/juneau/UriRelativity.html#PATH_INFO)
- Relative URIs should be considered relative to the request URI. (e.g.
`http://host:port/context-root/servlet-path/path-info`).</java-field></node-1>
+<java-method>[Builder#uriResolution(UriResolution)]({{API_DOCS}}/org/apache/juneau/serializer/Serializer/Builder.html#uriResolution(UriResolution))
- Setting that defines the final format of serialized URIs. Possible
values:</java-method>
+<node-1><java-field>[UriResolution#ABSOLUTE]({{API_DOCS}}/org/apache/juneau/UriResolution.html#ABSOLUTE)
- Resolve to an absolute URL. (e.g.
`http://host:port/context-root/servlet-path/path-info`).</java-field></node-1>
+<node-1><java-field>[UriResolution#ROOT_RELATIVE]({{API_DOCS}}/org/apache/juneau/UriResolution.html#ROOT_RELATIVE)
- Resolve to a root-relative URL. (e.g.
"/context-root/servlet-path/path-info").</java-field></node-1>
+<node-1><java-field>[UriResolution#NONE]({{API_DOCS}}/org/apache/juneau/UriResolution.html#NONE)
- Don't do any URL resolution.</java-field></node-1>
+</tree>
Juneau automatically interprets any [URL]({{API_DOCS}}/java/net/URL.html) and
[URI]({{API_DOCS}}/java/net/URI.html) objects as URIs and will resolve them
accordingly.
The [@Uri]({{API_DOCS}}/org/apache/juneau/annotation/Uri.html) annotation can
be used to extend that to other bean properties and class types so that they
also get interpreted as URIs.
diff --git a/juneau-docs-poc/docs/topics/02.20.00.PojoCategories.md
b/juneau-docs-poc/docs/topics/02.20.00.PojoCategories.md
index dca89c3fe..07238acc4 100644
--- a/juneau-docs-poc/docs/topics/02.20.00.PojoCategories.md
+++ b/juneau-docs-poc/docs/topics/02.20.00.PojoCategories.md
@@ -2,125 +2,304 @@
title: "POJO Categories"
---
-In general, Juneau allows for marshalling for a wide variety of POJO types
including: The following chart shows POJOs categorized into groups and whether
they can be serialized or parsed:
+In general, Juneau allows for marshalling for a wide variety of POJO types
including:
+
+The following chart shows POJOs categorized into groups and whether they can
be serialized or parsed:
+
### General POJO serialization/parsing support
-GroupDescriptionExamplesCan serialize?Can parse?
-1 **Java primitives and primitive objects**
-- \{@code String\}
-- \{@code Integer\}
-- \{@code Float\}
-- \{@code Boolean\}
-
-**yes** **yes** 2 **Java Collections Framework objects, Java arrays, Java
Optionals** 2a **With standard keys/values** Map keys are group [1, 4a, 6a]
objects.
-Map, Collection, Optional, and array values are group [1, 2, 3ac, 4a, 6a]
objects.
-`HashSet` `TreeMap` `List`
-- `Bean[]`
-
-`Optional` **yes** **yes** 2b **With non-standard keys/values** Map keys are
group [2, 3, 4b, 5, 6b, 7] objects.
-Map, Collection, and array values are group [3b, 4b, 5, 6b, 7] objects.
-`HashSet` `TreeMap` `Optional` **yes** **no** 3 **Java Beans** 3a **With
standard properties** These are beans that have one or more properties defined
by public getter or public fields.
-Properties can also be defined as final read-only fields and passed in as
constructor args.
-Property values are group [1, 2, 3ac, 4a, 6a] objects.
-**yes** **yes** 3b **With non-standard properties or not true beans** These
include true beans that have one or more properties defined by getter and
setter methods or properties but property types include group [3b, 4b, 5, 6b,
7] objects.
-This also includes classes that look like beans but aren't true beans.
-For example, classes that have getters but not setters, or classes without
no-arg constructors.
-**yes** **no** 3c **Virtual beans** These are unimplemented bean interfaces
with properties of type [1, 2, 3ac, 4a, 6a] objects.
-Parsers will automatically create interface proxies on top of BeanMap
instances.
-**yes** **yes** 3d **Read-only beans without setters** The same as 3a but
without property setters or constructor args.
-**yes** **no** 4 **Swapped objects** These are objects that are not directly
serializable but have
[ObjectSwaps]({{API_DOCS}}/org/apache/juneau/swap/ObjectSwap.html) associated
with them.
-The purpose of a POJO swap is to convert an object to another object that is
easier to serialize and parse.
-For example, the
[IsoLocalDateTime]({{API_DOCS}}/org/apache/juneau/swaps/TemporalDateSwap/IsoLocalDateTime.html)
class can be used to serialize [Date]({{API_DOCS}}/java/util/Date.html)
objects to ISO8601 strings, and parse them back into
[Date]({{API_DOCS}}/java/util/Date.html) objects.
-4a **2-way swapped to group [1, 2a, 3ac] objects** For example, a swap that
converts a \{@code Date\} to a \{@code String\}.
-- `java.util.Date`
-- `java.util.GregorianCalendar`
-
-**yes** **yes** 4b **1-way swapped to group [1, 2, 3] objects** For example, a
swap that converts an \{@code Iterator\} to a \{@code List\}.
-This would be one way, since you cannot reconstruct an \{@code Iterator\}.
-- `java.util.Iterator`
-
-**yes** **no** 5 **Readers and InputStreams** Contents are serialized directly
to the output stream or writer.
-Typically used for low-level language-specific replacement of POJOs using
per-Media-Type POJO swaps.
-- \{@code FileInputStream\}
-- \{@code StringReader\}
-
-**yes** **no** 6 **Non-serializable objects with standard methods for
converting to a serializable form** 6a Classes with a method that converts it
to a serializable form:
-- `public X swap(BeanSession);` where `X` is in groups
-
-[1, 2a, 3ac].
-- `public String toString();` where the string is any meaningful data.
-
-And a method that converts it back into the original object:
-- `public static T fromString(String);`
-- `public static T valueOf(String);`
-- `public static T parse(String);`
-- `public static T parseString(String);`
-- `public static T forName(String);`
-- `public static T forString(String);`
-- `public T(X);` where `X` is in groups [1, 2a, 3ac].
-- `public static T unswap(BeanSession,X);` where `X` is in
-
-groups [1, 2a, 3ac].
-- `java.lang.Class`
-- `java.sql.Time`
-- `java.sql.Timestamp`
-- `java.text.MessageFormat`
-- `java.text.NumberFormat`
-- `java.util.Date`
-- `java.util.UUID`
-- `java.util.logging.Level`
-- `javax.xml.bind.DatatypeConverter`
-
-**yes** **yes** 6b Classes that only have a method to convert to a
serializable form:
-- `public X swap(BeanSession);` where `X` is in groups
-
-[1, 2, 3].
-- `public String toString();` where the string is any meaningful data.
-
-**yes** **no** 7 **All other objects** Anything that doesn't fall into one of
the groups above are simply converted to \{@code Strings\} using the \{@code
toString()\} method.
-**yes** **no** Serializers are designed to work on tree-shaped POJO models.
-These are models where there are no referential loops (e.g.
-leaves with references to nodes, or nodes in one branch referencing nodes in
another branch).
-There is a serializer setting \{@code detectRecursions\} to look for and
handle these kinds of loops (by setting these references to null) but it is not
enabled by default since it introduces a moderate performance penalty.
+<table className="styled w800" style={{borderCollapse: 'collapse'}}>
+ <tr>
+ <th>Group</th>
+ <th>Description</th>
+ <th>Examples</th>
+ <th>Can<br />serialize?</th>
+ <th>Can<br />parse?</th>
+ </tr>
+ <tr className="dark bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>1</td>
+ <td><b>Java primitives and primitive objects</b></td>
+ <td>
+ <ul className="normal">
+ <li>`String`</li>
+ <li>`Integer`</li>
+ <li>`Float`</li>
+ <li>`Boolean`</li>
+ </ul>
+ </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ </tr>
+ <tr className="dark bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>2</td>
+ <td><b>Java Collections Framework objects, Java arrays, Java
Optionals</b></td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>2a</td>
+ <td>
+ <b>With standard keys/values</b><br />
+ Map keys are group [1, 4a, 6a] objects.<br />
+ Map, Collection, Optional, and array values are group [1, 2, 3ac, 4a,
6a] objects.
+ </td>
+ <td>
+ <ul className="normal">
+ <li>`HashSet<String,Integer>`</li>
+ <li>`TreeMap<Integer,Bean>`</li>
+ <li>`List<int[][]>`</li>
+ <li>`Bean[]`</li>
+ <li>`Optional<Bean>`</li>
+ </ul>
+ </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>2b</td>
+ <td>
+ <b>With non-standard keys/values</b><br />
+ Map keys are group [2, 3, 4b, 5, 6b, 7] objects.<br />
+ Map, Collection, and array values are group [3b, 4b, 5, 6b, 7] objects.
+ </td>
+ <td>
+ <ul className="normal">
+ <li>`HashSet<Bean,Integer>`</li>
+ <li>`TreeMap<Integer,Reader>`</li>
+ <li>`Optional<Reader>`</li>
+ </ul>
+ </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'salmon', textAlign: 'center'}}><b>no</b></td>
+ </tr>
+ <tr className="dark bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>3</td>
+ <td><b>Java Beans</b></td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>3a</td>
+ <td>
+ <b>With standard properties</b><br />
+ These are beans that have one or more properties defined by public
getter or public fields.<br />
+ Properties can also be defined as final read-only fields and passed in
as constructor args.<br />
+ Property values are group [1, 2, 3ac, 4a, 6a] objects.
+ </td>
+ <td> </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>3b</td>
+ <td>
+ <b>With non-standard properties or not true beans</b><br />
+ These include true beans that have one or more properties defined by
getter and setter methods or properties but property types include group [3b,
4b, 5, 6b, 7] objects.<br />
+ This also includes classes that look like beans but aren't true beans.
For example, classes that have getters but not setters, or classes without
no-arg constructors.
+ </td>
+ <td> </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'salmon', textAlign: 'center'}}><b>no</b></td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>3c</td>
+ <td>
+ <b>Virtual beans</b><br />
+ These are unimplemented bean interfaces with properties of type [1, 2,
3ac, 4a, 6a] objects.<br />
+ Parsers will automatically create interface proxies on top of BeanMap
instances.
+ </td>
+ <td> </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>3d</td>
+ <td>
+ <b>Read-only beans without setters</b><br />
+ The same as 3a but without property setters or constructor args.
+ </td>
+ <td> </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'salmon', textAlign: 'center'}}><b>no</b></td>
+ </tr>
+ <tr className="dark bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>4</td>
+ <td>
+ <b>Swapped objects</b><br />
+ These are objects that are not directly serializable but have
[ObjectSwaps]({{API_DOCS}}/org/apache/juneau/swap/ObjectSwap.html) associated
with them. The purpose of a POJO swap is to convert an object to another object
that is easier to serialize and parse. For example, the
[IsoLocalDateTime]({{API_DOCS}}/org/apache/juneau/swaps/TemporalDateSwap/IsoLocalDateTime.html)
class can be used to serialize [Date]({{API_DOCS}}/java/util/Date.html)
objects to ISO8601 strings, and parse them [...]
+ </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>4a</td>
+ <td>
+ <b>2-way swapped to group [1, 2a, 3ac] objects</b><br />
+ For example, a swap that converts a `Date` to a `String`.
+ </td>
+ <td>
+ <ul className="normal">
+ <li>`java.util.Date`</li>
+ <li>`java.util.GregorianCalendar`</li>
+ </ul>
+ </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ </tr>
+ <tr className="light bb">
+ <td style={{textAlign: 'center'}}>4b</td>
+ <td>
+ <b>1-way swapped to group [1, 2, 3] objects</b><br />
+ For example, a swap that converts an `Iterator` to a `List`.<br />
+ This would be one way, since you cannot reconstruct an `Iterator`.
+ </td>
+ <td>
+ <ul className="normal">
+ <li>`java.util.Iterator`</li>
+ </ul>
+ </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'salmon', textAlign: 'center'}}><b>no</b></td>
+ </tr>
+ <tr className="dark bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>5</td>
+ <td>
+ <b>Readers and InputStreams</b><br />
+ Contents are serialized directly to the output stream or writer.<br />
+ Typically used for low-level language-specific replacement of POJOs
using per-Media-Type POJO swaps.
+ </td>
+ <td>
+ <ul className="normal">
+ <li>`FileInputStream`</li>
+ <li>`StringReader`</li>
+ </ul>
+ </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'salmon', textAlign: 'center'}}><b>no</b></td>
+ </tr>
+ <tr className="dark bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>6</td>
+ <td>
+ <b>Non-serializable objects with standard methods for converting to a
serializable form</b>
+ </td>
+ <td> </td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ <tr className="light bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>6a</td>
+ <td>
+ Classes with a method that converts it to a serializable form:
+ <ul>
+ <li>`public X swap(BeanSession);` where `X` is in groups [1, 2a,
3ac].</li>
+ <li>`public String toString();` where the string is any meaningful
data.</li>
+ </ul>
+ And a method that converts it back into the original object:
+ <ul>
+ <li>`public static T fromString(String);`</li>
+ <li>`public static T valueOf(String);`</li>
+ <li>`public static T parse(String);`</li>
+ <li>`public static T parseString(String);`</li>
+ <li>`public static T forName(String);`</li>
+ <li>`public static T forString(String);`</li>
+ <li>`public T(X);` where `X` is in groups [1, 2a, 3ac].</li>
+ <li>`public static T unswap(BeanSession,X);` where `X` is in groups
[1, 2a, 3ac].</li>
+ </ul>
+ </td>
+ <td>
+ <ul className="normal">
+ <li>`java.lang.Class`</li>
+ <li>`java.sql.Time`</li>
+ <li>`java.sql.Timestamp`</li>
+ <li>`java.text.MessageFormat`</li>
+ <li>`java.text.NumberFormat`</li>
+ <li>`java.util.Date`</li>
+ <li>`java.util.UUID`</li>
+ <li>`java.util.logging.Level`</li>
+ <li>`javax.xml.bind.DatatypeConverter`</li>
+ </ul>
+ </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ </tr>
+ <tr className="light bb" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>6b</td>
+ <td>
+ Classes that only have a method to convert to a serializable form:
+ <ul>
+ <li>`public X swap(BeanSession);` where `X` is in groups [1, 2,
3].</li>
+ <li>`public String toString();` where the string is any meaningful
data.</li>
+ </ul>
+ </td>
+ <td> </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'salmon', textAlign: 'center'}}><b>no</b></td>
+ </tr>
+ <tr className="dark" style={{backgroundColor: 'lightyellow'}}>
+ <td style={{textAlign: 'center'}}>7</td>
+ <td>
+ <b>All other objects</b><br />
+ Anything that doesn't fall into one of the groups above are simply
converted to `Strings` using the `toString()` method.
+ </td>
+ <td> </td>
+ <td style={{backgroundColor: 'lightgreen', textAlign:
'center'}}><b>yes</b></td>
+ <td style={{backgroundColor: 'salmon', textAlign: 'center'}}><b>no</b></td>
+ </tr>
+</table>
+
+:::info
+Serializers are designed to work on tree-shaped POJO models.
+These are models where there are no referential loops (e.g. leaves with
references to nodes, or nodes in one branch referencing nodes in another
branch).
+There is a serializer setting `detectRecursions` to look for and handle these
kinds of loops (by setting these references to `null`) but it is not enabled by
default since it introduces a moderate performance penalty.
+:::
+
### POJOs convertible to/from Strings
A separate category exists for POJOs that can be converted to and from Strings.
These are used in places such as:
+
- Serializing of POJOs to Strings in the REST client API when no serializers
are registered.
+- Parsing of POJOs from Strings in the REST server API for "text/plain"
requests where "text/plain" is not already mapped to an existing serializer.
-Parsing of POJOs from Strings in the REST server API for "text/plain" requests
where "text/plain" is not already mapped to an existing serializer.
As a general rule, all POJOs are converted to Strings using the `toString()`
method.
However, there is one exception:
+
- [TimeZone]({{API_DOCS}}/java/util/TimeZone.html) - Uses
[TimeZone#getID()]({{API_DOCS}}/java/util/TimeZone.html#getID())
POJOs are convertible from Strings using any of the following (matched in the
specified order):
+
- Any of the following public static non-deprecated methods:
-- `create(String)`
-- `fromString(String)`
-- `fromValue(String)`
-- `valueOf(String)`
-- `parse(String)`
-- `parseString(String)`
-- `forName(String)`
-- `forString(String)`
+ - `create(String)`
+ - `fromString(String)`
+ - `fromValue(String)`
+ - `valueOf(String)`
+ - `parse(String)`
+ - `parseString(String)`
+ - `forName(String)`
+ - `forString(String)`
- Has a public constructor that takes in a `String`.
Exceptions exist for the following classes:
-- [TimeZone]({{API_DOCS}}/java/util/TimeZone.html) - Uses
[TimeZone#getTimeZone(String)]({{API_DOCS}}/java/util/TimeZone.html#getTimeZone(String))
-[Locale]({{API_DOCS}}/java/util/Locale.html) - Uses
[Locale#forLanguageTag(String)]({{API_DOCS}}/java/util/Locale.html#forLanguageTag(String))
after replacing '_' with '-'.
-[Boolean]({{API_DOCS}}/java/lang/Boolean.html) - Blank and "null" are
interpreted as null values.
+- [TimeZone]({{API_DOCS}}/java/util/TimeZone.html) - Uses
[TimeZone#getTimeZone(String)]({{API_DOCS}}/java/util/TimeZone.html#getTimeZone(String))
+- [Locale]({{API_DOCS}}/java/util/Locale.html) - Uses
[Locale#forLanguageTag(String)]({{API_DOCS}}/java/util/Locale.html#forLanguageTag(String))
after replacing '_' with '-'.
+- [Boolean]({{API_DOCS}}/java/lang/Boolean.html) - Blank and "null" are
interpreted as null values.
- Primitives (except for `void.class`) - Uses the primitive wrapper classes
for instantiating from Strings.
### POJOs convertible to/from other types
POJOs are also converted to various other types in places such as the Open-API
serializers and parsers.
In this section, the type being converted to will be referred to as `X`.
+
POJOs are considered convertible from X if it has any of the following
(matched in the specified order):
+
- Any any of the following public static non-deprecated methods:
-- `create(X)`
-- `from*(X)`
+ - `create(X)`
+ - `from*(X)`
- Has a public constructor that takes in an `X`.
- The X class has a public non-static no-arg non-deprecated method called
`to*()`.
-POJOs are considered convertible from X if any of the reverse of above are
true.
+POJOs are considered convertible from X if any of the reverse of above are
true.
\ No newline at end of file
diff --git a/juneau-docs-poc/docs/topics/02.21.00.SimpleVariableLanguage.md
b/juneau-docs-poc/docs/topics/02.21.00.SimpleVariableLanguage.md
index bb854cb36..36716020e 100644
--- a/juneau-docs-poc/docs/topics/02.21.00.SimpleVariableLanguage.md
+++ b/juneau-docs-poc/docs/topics/02.21.00.SimpleVariableLanguage.md
@@ -2,12 +2,15 @@
title: "Simple Variable Language"
---
-The [svl]({{API_DOCS}}/org/apache/juneau/svl.html) packages defines an API for
a language called "Simple Variable Language".
-In a nutshell, Simple Variable Language (or SVL) is text that contains
variables of the form "$varName\{varKey\}".
+The [org.apache.juneau.svl]({{API_DOCS}}/org/apache/juneau/svl.html) packages
defines an API for a language called "Simple Variable Language".
+
+In a nutshell, Simple Variable Language (or SVL) is text that contains
variables of the form `$varName{varKey}`.
It is used extensively in the Config, REST and Microservice APIs.
-Most variables can be recursively nested within the varKey (e.g.
-"$FOO\{$BAR\{xxx\},$BAZ\{xxx\}\}") and can return values that themselves
contain more variables.
+
+Most variables can be recursively nested within the varKey (e.g.
`$FOO{$BAR{xxx},$BAZ{xxx}}`) and can return values that themselves contain more
variables.
+
The [VarResolver]({{API_DOCS}}/org/apache/juneau/svl/VarResolver.html) class
is used to resolve variables.
+
The
[VarResolver#DEFAULT]({{API_DOCS}}/org/apache/juneau/svl/VarResolver.html#DEFAULT)
resolver is a reusable instance of this class configured with the following
basic variables:
-
[SystemPropertiesVar]({{API_DOCS}}/org/apache/juneau/svl/vars/SystemPropertiesVar.html)
- `$S\{key[,default]\}`
-
[EnvVariablesVar]({{API_DOCS}}/org/apache/juneau/svl/vars/EnvVariablesVar.html)
- `$E\{key[,default]\}`
@@ -27,14 +30,12 @@ The following logic variables are also provided:
:::tip Example
-
```java
// Use the default variable resolver to resolve a string that contains
// $S (system property) variables.
String property = VarResolver.DEFAULT.resolve("The Java home directory is
$S{java.home}");
```
-
The following shows how variables can be arbitrarily nested...
```java
diff --git a/juneau-docs-poc/sidebars.ts b/juneau-docs-poc/sidebars.ts
index fe0c17535..6ef51ca08 100644
--- a/juneau-docs-poc/sidebars.ts
+++ b/juneau-docs-poc/sidebars.ts
@@ -344,16 +344,9 @@ const sidebars: SidebarsConfig = {
label: '2.19. Jackson Comparison',
},
{
- type: 'category',
- label: '2.20. Simple Variable Language',
- collapsed: true,
- items: [
- {
- type: 'doc',
- id: 'topics/02.20.00.PojoCategories',
- label: '2.20. POJO Categories',
- },
- ],
+ type: 'doc',
+ id: 'topics/02.20.00.PojoCategories',
+ label: '2.20. POJO Categories',
},
{
type: 'category',
@@ -393,16 +386,9 @@ const sidebars: SidebarsConfig = {
label: '2.22. Encoders',
},
{
- type: 'category',
- label: '2.23. JSON Details',
- collapsed: true,
- items: [
- {
- type: 'doc',
- id: 'topics/02.23.00.ObjectTools',
- label: '2.23. Object Tools',
- },
- ],
+ type: 'doc',
+ id: 'topics/02.23.00.ObjectTools',
+ label: '2.23. Object Tools',
},
{
type: 'category',
@@ -442,114 +428,54 @@ const sidebars: SidebarsConfig = {
],
},
{
- type: 'category',
- label: '2.25. XML Details',
- collapsed: true,
- items: [
- {
- type: 'doc',
- id: 'topics/02.25.00.JsonSchemaDetails',
- label: '2.25. JSON Schema Details',
- },
- ],
+ type: 'doc',
+ id: 'topics/02.25.00.JsonSchemaDetails',
+ label: '2.25. JSON Schema Details',
},
{
type: 'category',
- label: '2.26. HTML Details',
+ label: '2.26. XML Details',
collapsed: true,
items: [
{
-
- type: 'category',
-
+ type: 'doc',
+ id: 'topics/02.26.00.XmlDetails',
label: '2.26. XML Details',
-
- collapsed: true,
-
- items: [
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.00.XmlDetails',
-
- label: '2.26. XML Details',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.01.XmlMethodology',
-
- label: '2.26.1. XML Methodology',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.02.XmlSerializers',
-
- label: '2.26.2. XML Serializers',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.03.XmlParsers',
-
- label: '2.26.3. XML Parsers',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.04.XmlBeanTypeNameAnnotation',
-
- label: '2.26.4. @XmlBeanTypeName Annotation',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.05.XmlChildNameAnnotation',
-
- label: '2.26.5. @XmlChildName Annotation',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.06.XmlFormatAnnotation',
-
- label: '2.26.6. @XmlFormat Annotation',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.26.07.XmlNamespaces',
-
- label: '2.26.7. XML Namespaces',
-
- },
-
- ],
-
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.26.01.XmlMethodology',
+ label: '2.26.1. XML Methodology',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.26.02.XmlSerializers',
+ label: '2.26.2. XML Serializers',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.26.03.XmlParsers',
+ label: '2.26.3. XML Parsers',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.26.04.XmlBeanTypeNameAnnotation',
+ label: '2.26.4. @XmlBeanTypeName Annotation',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.26.05.XmlChildNameAnnotation',
+ label: '2.26.5. @XmlChildName Annotation',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.26.06.XmlFormatAnnotation',
+ label: '2.26.6. @XmlFormat Annotation',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.26.07.XmlNamespaces',
+ label: '2.26.7. XML Namespaces',
},
],
},
@@ -657,249 +583,117 @@ const sidebars: SidebarsConfig = {
},
{
- type: 'category',
- label: '2.28. UON Details',
- collapsed: true,
- items: [
- {
- type: 'doc',
- id: 'topics/02.28.00.HtmlSchema',
- label: '2.28. HTML Schema',
- },
- ],
+ type: 'doc',
+ id: 'topics/02.28.00.HtmlSchema',
+ label: '2.28. HTML Schema',
},
{
type: 'category',
- label: '2.29. URL-Encoding Details',
+ label: '2.29. UON Details',
collapsed: true,
items: [
{
-
- type: 'category',
-
+ type: 'doc',
+ id: 'topics/02.29.00.UonDetails',
label: '2.29. UON Details',
-
- collapsed: true,
-
- items: [
-
- {
-
- type: 'doc',
-
- id: 'topics/02.29.00.UonDetails',
-
- label: '2.29. UON Details',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.29.01.UonMethodology',
-
- label: '2.29.1. UON Methodology',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.29.02.UonSerializers',
-
- label: '2.29.2. UON Serializers',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.29.03.UonParsers',
-
- label: '2.29.3. UON Parsers',
-
- },
-
- ],
-
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.29.01.UonMethodology',
+ label: '2.29.1. UON Methodology',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.29.02.UonSerializers',
+ label: '2.29.2. UON Serializers',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.29.03.UonParsers',
+ label: '2.29.3. UON Parsers',
},
],
},
{
type: 'category',
- label: '2.30. MessagePack Details',
+ label: '2.30. URL-Encoding Details',
collapsed: true,
items: [
{
-
- type: 'category',
-
+ type: 'doc',
+ id: 'topics/02.30.00.UrlEncodingDetails',
label: '2.30. URL-Encoding Details',
-
- collapsed: true,
-
- items: [
-
- {
-
- type: 'doc',
-
- id: 'topics/02.30.00.UrlEncodingDetails',
-
- label: '2.30. URL-Encoding Details',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.30.01.UrlEncMethodology',
-
- label: '2.30.1. URL-Encoding Methodology',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.30.02.UrlEncSerializers',
-
- label: '2.30.2. URL-Encoding Serializers',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.30.03.UrlEncParsers',
-
- label: '2.30.3. URL-Encoding Parsers',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.30.04.UrlEncodingAnnotation',
-
- label: '2.30.4. @UrlEncoding Annotation',
-
- },
-
- ],
-
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.30.01.UrlEncMethodology',
+ label: '2.30.1. URL-Encoding Methodology',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.30.02.UrlEncSerializers',
+ label: '2.30.2. URL-Encoding Serializers',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.30.03.UrlEncParsers',
+ label: '2.30.3. URL-Encoding Parsers',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.30.04.UrlEncodingAnnotation',
+ label: '2.30.4. @UrlEncoding Annotation',
},
],
},
{
type: 'category',
- label: '2.31. OpenAPI Details',
+ label: '2.31. MessagePack Details',
collapsed: true,
items: [
{
-
- type: 'category',
-
+ type: 'doc',
+ id: 'topics/02.31.00.MsgPackDetails',
label: '2.31. MessagePack Details',
-
- collapsed: true,
-
- items: [
-
- {
-
- type: 'doc',
-
- id: 'topics/02.31.00.MsgPackDetails',
-
- label: '2.31. MessagePack Details',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.31.01.MsgPackSerializers',
-
- label: '2.31.1. MessagePack Serializers',
-
- },
-
- {
-
- type: 'doc',
-
- id: 'topics/02.31.02.MsgPackParsers',
-
- label: '2.31.2. MessagePack Parsers',
-
- },
-
- ],
-
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.31.01.MsgPackSerializers',
+ label: '2.31.1. MessagePack Serializers',
+ },
+ {
+ type: 'doc',
+ id: 'topics/02.31.02.MsgPackParsers',
+ label: '2.31.2. MessagePack Parsers',
},
],
},
{
-
type: 'category',
-
label: '2.32. OpenAPI Details',
-
collapsed: true,
-
items: [
-
{
-
type: 'doc',
-
id: 'topics/02.32.00.OpenApiDetails',
-
label: '2.32. OpenAPI Details',
-
},
-
{
-
type: 'doc',
-
id: 'topics/02.32.01.OpenApiMethodology',
-
label: '2.32.1. OpenAPI Methodology',
-
},
-
{
-
type: 'doc',
-
id: 'topics/02.32.02.OpenApiSerializers',
-
label: '2.32.2. OpenAPI Serializers',
-
},
-
{
-
type: 'doc',
-
id: 'topics/02.32.03.OpenApiParsers',
-
label: '2.32.3. OpenAPI Parsers',
-
},
-
],
-
},
{
type: 'doc',