Javadocs.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
index 092ce9e..47858fa 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
@@ -117,6 +117,17 @@
* <li class='link'>{@doc juneau-rest-server.HttpPartAnnotations.Request}
* <li class='link'>{@doc juneau-rest-client.RestProxies.Request}
* </ul>
+ *
+ * <div class='warn'>
+ * If using this annotation on a Spring bean, note that you are likely to encounter issues when using on parameterized
+ * types such as <code>List<MyBean></code>. This is due to the fact that Spring uses CGLIB to recompile classes
+ * at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
+ * Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
+ * (e.g. <code>List</code>). Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
+ * when trying to access generalized <code>ObjectMaps</code> as beans. The best solution to this issue is to either
+ * specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
+ * will not try to recompile it.
+ * </div>
*/
@Documented
@Target({PARAMETER,FIELD,METHOD,TYPE})
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
index e4a4601..ccf3634 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
@@ -98,6 +98,17 @@
* <li class='link'>{@doc juneau-rest-server.HttpPartAnnotations.Request}
* <li class='link'>{@doc juneau-rest-client.RestProxies.Request}
* </ul>
+ *
+ * <div class='warn'>
+ * If using this annotation on a Spring bean, note that you are likely to encounter issues when using on parameterized
+ * types such as <code>List<MyBean></code>. This is due to the fact that Spring uses CGLIB to recompile classes
+ * at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
+ * Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
+ * (e.g. <code>List</code>). Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
+ * when trying to access generalized <code>ObjectMaps</code> as beans. The best solution to this issue is to either
+ * specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
+ * will not try to recompile it.
+ * </div>
*/
@Documented
@Target({PARAMETER,FIELD,METHOD,TYPE})
diff --git a/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/01.Body.html b/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/01.Body.html
index a74a95c..082e4e9 100644
--- a/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/01.Body.html
+++ b/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/01.Body.html
@@ -13,7 +13,7 @@
***************************************************************************************************************************/
-->
-@Body
+{updated} @Body
<p>
The {@link oaj.http.annotation.Body @Body} annotation is used to identify POJOs to be used as the body of an HTTP request.
@@ -187,6 +187,18 @@
<br>Values on methods override values on POJO classes.
</ul>
+<div class='warn'>
+ If using this annotation on a Spring bean, note that you are likely to encounter issues when using on parameterized
+ types such as <code>List<MyBean></code>. This is due to the fact that Spring uses CGLIB to recompile classes
+ at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
+ Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
+ (e.g. <code>List</code>). Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
+ when trying to access generalized <code>ObjectMaps</code> as beans. The best solution to this issue is to either
+ specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
+ will not try to recompile it.
+</div>
+
+
<ul class='seealso'>
<li class='jc'>{@link oajr.RequestBody}
<li class='link'>{@doc juneau-rest-server.OpenApiSchemaPartParsing}
diff --git a/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/02.FormData.html b/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/02.FormData.html
index e8ff562..ddd5a0f 100644
--- a/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/02.FormData.html
+++ b/juneau-doc/docs/Topics/07.juneau-rest-server/10.HttpPartAnnotations/02.FormData.html
@@ -13,7 +13,7 @@
***************************************************************************************************************************/
-->
-@FormData
+{updated} @FormData
<p>
The {@link oaj.http.annotation.FormData @FormData} annotation is used to retrieve request form post entries.
@@ -176,6 +176,18 @@
<br>The {@link oaj.http.annotation.Query @Query} annotation can be used to retrieve a URL parameter in the URL string without triggering the
servlet to drain the body content.
</div>
+
+<div class='warn'>
+ If using this annotation on a Spring bean, note that you are likely to encounter issues when using on parameterized
+ types such as <code>List<MyBean></code>. This is due to the fact that Spring uses CGLIB to recompile classes
+ at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
+ Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
+ (e.g. <code>List</code>). Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
+ when trying to access generalized <code>ObjectMaps</code> as beans. The best solution to this issue is to either
+ specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
+ will not try to recompile it.
+</div>
+
<ul class='seealso'>
<li class='jc'>{@link oajr.RequestFormData}
<li class='link'>{@doc juneau-rest-server.OpenApiSchemaPartParsing}
diff --git a/juneau-doc/src/main/javadoc/javadoc.css b/juneau-doc/src/main/javadoc/javadoc.css
index dde428d..5788027 100755
--- a/juneau-doc/src/main/javadoc/javadoc.css
+++ b/juneau-doc/src/main/javadoc/javadoc.css
@@ -703,16 +703,3 @@
border-radius:10px;
font-size: 1.2em;
}
-
-.new {
- background-color:lightgreen;
-}
-
-.updated {
- background-color:#CFC;
-}
-
-.todo {
- background-color:#FD8;
-}
-
diff --git a/juneau-doc/src/main/javadoc/overview.html b/juneau-doc/src/main/javadoc/overview.html
index 1e4bdc3..4730b30 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -299,8 +299,8 @@
<li><p class=''><a class='doclink' href='#juneau-rest-server.OpenApiSchemaPartSerializing'>OpenAPI Schema Part Serializing</a></p>
<li><p class=''><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations'>HTTP-Part Annotations</a></p>
<ol>
- <li><p class=''><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations.Body'>@Body</a></p>
- <li><p class=''><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations.FormData'>@FormData</a></p>
+ <li><p class='updated'><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations.Body'>@Body</a></p>
+ <li><p class='updated'><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations.FormData'>@FormData</a></p>
<li><p class=''><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations.HasFormData'>@HasFormData</a></p>
<li><p class=''><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations.Query'>@Query</a></p>
<li><p class=''><a class='doclink' href='#juneau-rest-server.HttpPartAnnotations.HasQuery'>@HasQuery</a></p>
@@ -9590,15 +9590,15 @@
)
</p>
<ul class='notes'>
- <li class='note'>
+ <li>
Array properties can also use CSV/SSV/PIPES for array notation.
<br>Various notations can be mixed throughout.
- <li class='note'>
+ <li>
Schemas and POJOs can be defined arbitrarily deep.
- <li class='note'>
+ <li>
Schemas are optional.
They can be skipped or partially defined.
- <li class='note'>
+ <li>
We make our best attempt to convert the input to the matching type.
However, you will get <c>SerializeExceptions</c> if you attempt an impossible conversion.
(e.g. trying to serialize the string "foo" as a boolean).
@@ -16202,7 +16202,7 @@
<!-- ==================================================================================================== -->
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-rest-server.HttpPartAnnotations.Body' id='juneau-rest-server.HttpPartAnnotations.Body'>7.10.1 - @Body</a></h4>
+<h4 class='topic updated' onclick='toggle(this)'><a href='#juneau-rest-server.HttpPartAnnotations.Body' id='juneau-rest-server.HttpPartAnnotations.Body'>7.10.1 - @Body</a></h4>
<div class='topic'><!-- START: 7.10.1 - juneau-rest-server.HttpPartAnnotations.Body -->
<p>
The {@link org.apache.juneau.http.annotation.Body @Body} annotation is used to identify POJOs to be used as the body of an HTTP request.
@@ -16376,6 +16376,18 @@
<br>Values on methods override values on POJO classes.
</ul>
+<div class='warn'>
+ If using this annotation on a Spring bean, note that you are likely to encounter issues when using on parameterized
+ types such as <code>List<MyBean></code>. This is due to the fact that Spring uses CGLIB to recompile classes
+ at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
+ Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
+ (e.g. <code>List</code>). Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
+ when trying to access generalized <code>ObjectMaps</code> as beans. The best solution to this issue is to either
+ specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
+ will not try to recompile it.
+</div>
+
+
<ul class='seealso'>
<li class='jc'>{@link org.apache.juneau.rest.RequestBody}
<li class='link'>{@doc juneau-rest-server.OpenApiSchemaPartParsing}
@@ -16384,7 +16396,7 @@
<!-- ==================================================================================================== -->
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-rest-server.HttpPartAnnotations.FormData' id='juneau-rest-server.HttpPartAnnotations.FormData'>7.10.2 - @FormData</a></h4>
+<h4 class='topic updated' onclick='toggle(this)'><a href='#juneau-rest-server.HttpPartAnnotations.FormData' id='juneau-rest-server.HttpPartAnnotations.FormData'>7.10.2 - @FormData</a></h4>
<div class='topic'><!-- START: 7.10.2 - juneau-rest-server.HttpPartAnnotations.FormData -->
<p>
The {@link org.apache.juneau.http.annotation.FormData @FormData} annotation is used to retrieve request form post entries.
@@ -16547,6 +16559,18 @@
<br>The {@link org.apache.juneau.http.annotation.Query @Query} annotation can be used to retrieve a URL parameter in the URL string without triggering the
servlet to drain the body content.
</div>
+
+<div class='warn'>
+ If using this annotation on a Spring bean, note that you are likely to encounter issues when using on parameterized
+ types such as <code>List<MyBean></code>. This is due to the fact that Spring uses CGLIB to recompile classes
+ at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
+ Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
+ (e.g. <code>List</code>). Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
+ when trying to access generalized <code>ObjectMaps</code> as beans. The best solution to this issue is to either
+ specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
+ will not try to recompile it.
+</div>
+
<ul class='seealso'>
<li class='jc'>{@link org.apache.juneau.rest.RequestFormData}
<li class='link'>{@doc juneau-rest-server.OpenApiSchemaPartParsing}
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/toc.html b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
index 41c7c83..baee82d 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
@@ -242,8 +242,8 @@
<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.OpenApiSchemaPartSerializing'>OpenAPI Schema Part Serializing</a></p>
<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations'>HTTP-Part Annotations</a></p>
<ol>
- <li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations.Body'>@Body</a></p>
- <li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations.FormData'>@FormData</a></p>
+ <li><p class='updated'><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations.Body'>@Body</a></p>
+ <li><p class='updated'><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations.FormData'>@FormData</a></p>
<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations.HasFormData'>@HasFormData</a></p>
<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations.Query'>@Query</a></p>
<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-rest-server.HttpPartAnnotations.HasQuery'>@HasQuery</a></p>
diff --git a/juneau-doc/src/main/javadoc/resources/juneau-doc.css b/juneau-doc/src/main/javadoc/resources/juneau-doc.css
index 6ee48e0..6236e11 100755
--- a/juneau-doc/src/main/javadoc/resources/juneau-doc.css
+++ b/juneau-doc/src/main/javadoc/resources/juneau-doc.css
@@ -110,9 +110,20 @@
cursor: zoom-out;
max-width: 1000px;
}
+h5.topic {
+ margin-bottom: 20px;
+ margin-top: 40px;
+ padding-top: 3px;
+ padding-left: 10px;
+ color: #2c4557;
+ border-top: 1px groove #9eadc0;
+ max-width: 1000px;
+}
+
h2.topic { font-size: 14pt; }
h3.topic { font-size: 13pt; }
h4.topic { font-size: 12pt; }
+h5.topic { font-size: 11pt; }
.topic p {
max-width: 800px;
@@ -213,7 +224,6 @@
/* Light-colored background headers */
h5.toc,
-h5.topic,
h2.title,
div.docSummary > div.block,
div.contentContainer > div.block > p:first-child {
@@ -245,13 +255,6 @@
box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
}
-h5.topic {
- color: #2C4557;
- padding: 5px 20px;
- margin: 30px 10px 10px 0px;
- text-decoration: none;
-}
-
/* Light-colored title on package summary pages */
div.docSummary > div.block,
div.contentContainer > div.block > p:first-child {
@@ -487,3 +490,15 @@
background-color: #faced3;
border-left: 3px solid #b32400;
}
+
+.new {
+ background-color:lightgreen;
+}
+
+.updated {
+ background-color:#CFC;
+}
+
+.todo {
+ background-color:#FD8;
+}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 0877c02..78d9919 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -50,6 +50,7 @@
import org.apache.juneau.httppart.bean.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.jsonschema.*;
+import org.apache.juneau.marshall.*;
import org.apache.juneau.oapi.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.remote.*;