You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/02/08 01:15:59 UTC
[1/7] incubator-juneau git commit: Exclude .settings files from RAT
check.
Repository: incubator-juneau
Updated Branches:
refs/heads/master 18f14a7d4 -> 30dd3b936
Exclude .settings files from RAT check.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/642f5dd3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/642f5dd3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/642f5dd3
Branch: refs/heads/master
Commit: 642f5dd3566f7b400f486fa18a69f1316b3ffb0d
Parents: 18f14a7
Author: JamesBognar <ja...@apache.org>
Authored: Tue Feb 7 16:14:52 2017 -0500
Committer: JamesBognar <ja...@apache.org>
Committed: Tue Feb 7 16:14:52 2017 -0500
----------------------------------------------------------------------
pom.xml | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/642f5dd3/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 4da6f48..a9d1356 100644
--- a/pom.xml
+++ b/pom.xml
@@ -127,6 +127,7 @@
<exclude>**/.idea</exclude>
<exclude>**/*.iml</exclude>
<exclude>**/*.classpath</exclude>
+ <exclude>**/*.settings</exclude>
<exclude>**/*.log.*</exclude>
<exclude>**/target/**</exclude>
<exclude>DEPENDENCIES</exclude>
[3/7] incubator-juneau git commit: Eliminate ClassMeta dependencies
from Parser. Clean up docs.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
index 748aaca..29a2dfd 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -42,12 +42,10 @@ import org.apache.juneau.utils.*;
/**
* Represents an HTTP request for a REST resource.
* <p>
- * Equivalent to {@link HttpServletRequest} except with some additional convenience methods.
- * </p>
+ * Equivalent to {@link HttpServletRequest} except with some additional convenience methods.
* <p>
- * For reference, given the URL <js>"http://localhost:9080/contextRoot/servletPath/foo?bar=baz#qux"</js>, the
+ * For reference, given the URL <js>"http://localhost:9080/contextRoot/servletPath/foo?bar=baz#qux"</js>, the
* following methods return the following values....
- * </p>
* <table class='styled'>
* <tr><th>Method</th><th>Value</th></tr>
* <tr><td>{@code getContextPath()}</td><td>{@code /contextRoot}</td></tr>
@@ -59,8 +57,7 @@ import org.apache.juneau.utils.*;
* <tr><td>{@code getServletPath()}</td><td>{@code /servletPath}</td></tr>
* </table>
* <p>
- * Refer to <a class='doclink' href='package-summary.html#TOC'>REST Servlet API</a> for information about using this class.
- * </p>
+ * Refer to <a class="doclink" href="package-summary.html#TOC">REST Servlet API</a> for information about using this class.
*/
@SuppressWarnings("unchecked")
public final class RestRequest extends HttpServletRequestWrapper {
@@ -171,7 +168,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Retrieve the properties active for this request.
* <p>
- * These properties can be modified by the request.
+ * These properties can be modified by the request.
*
* @return The properties active for this request.
*/
@@ -199,8 +196,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the specified header value, or <jk>null</jk> if the header doesn't exist.
* <p>
- * If {@code allowHeaderParams} init parameter is <jk>true</jk>, then first looks
- * for {@code &HeaderName=x} in the URL query string.
+ * If {@code allowHeaderParams} init parameter is <jk>true</jk>, then first looks for {@code &HeaderName=x} in the URL query string.
*/
@Override /* ServletRequest */
public String getHeader(String name) {
@@ -210,8 +206,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the specified header value, or a default value if the header doesn't exist.
* <p>
- * If {@code allowHeaderParams} init parameter is <jk>true</jk>, then first looks
- * for {@code &HeaderName=x} in the URL query string.
+ * If {@code allowHeaderParams} init parameter is <jk>true</jk>, then first looks for {@code &HeaderName=x} in the URL query string.
*
* @param name The HTTP header name.
* @param def The default value to return if the header value isn't found.
@@ -238,54 +233,74 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the specified header value converted to a POJO.
* <p>
- * The type can be any POJO type convertable from a <code>String</code> (See <a class='doclink' href='package-summary.html#PojosConvertableFromString'>POJOs Convertable From Strings</a>).
+ * The type can be any POJO type convertable from a <code>String</code>
+ * (See <a class="doclink" href="package-summary.html#PojosConvertableFromString">POJOs Convertable From Strings</a>).
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into an integer.</jc>
+ * <jk>int</jk> myheader = req.getHeader(<js>"My-Header"</js>, <jk>int</jk>.<jk>class</jk>);
+ *
+ * <jc>// Parse a UUID.</jc>
+ * UUID myheader = req.getHeader(<js>"My-Header"</js>, UUID.<jk>class</jk>);
+ * </p>
*
* @param name The HTTP header name.
- * @param c The class type to convert the header value to.
- * @param def The default value if the header was not specified or is <jk>null</jk>.
+ * @param type The class type to convert the header value to.
* @param <T> The class type to convert the header value to.
* @return The parameter value converted to the specified class type.
*/
- public <T> T getHeader(String name, Class<T> c, T def) {
+ public <T> T getHeader(String name, Class<T> type) {
String h = getHeader(name);
- if (h == null)
- return def;
- return beanSession.convertToType(h, c);
+ return beanSession.convertToType(h, type);
}
/**
- * Returns the specified header value converted to a POJO.
- * <p>
- * The type can be any POJO type convertable from a <code>String</code> (See <a class='doclink' href='package-summary.html#PojosConvertableFromString'>POJOs Convertable From Strings</a>).
+ * Same as {@link #getHeader(String, Class)} but returns a default value if not found.
*
* @param name The HTTP header name.
- * @param c The class type to convert the header value to.
+ * @param def The default value if the header was not specified or is <jk>null</jk>.
+ * @param type The class type to convert the header value to.
* @param <T> The class type to convert the header value to.
* @return The parameter value converted to the specified class type.
*/
- public <T> T getHeader(String name, Class<T> c) {
+ public <T> T getHeader(String name, T def, Class<T> type) {
String h = getHeader(name);
- return beanSession.convertToType(h, c);
+ if (h == null)
+ return def;
+ return beanSession.convertToType(h, type);
}
/**
- * Same as {@link #getHeader(String, Class)} except works on parameterized
- * types such as those returned by {@link Method#getGenericParameterTypes()}
+ * Returns the specified header value converted to a POJO.
+ * <p>
+ * The type can be any POJO type convertable from a <code>String</code>
+ * (See <a class="doclink" href="package-summary.html#PojosConvertableFromString">POJOs Convertable From Strings</a>).
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into a linked-list of strings.</jc>
+ * List<String> myheader = req.getHeader(<js>"My-Header"</js>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ * </p>
*
* @param name The HTTP header name.
- * @param c The class type to convert the header value to.
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @param <T> The class type to convert the header value to.
* @return The parameter value converted to the specified class type.
*/
- public <T> T getHeader(String name, Type c) {
+ public <T> T getHeader(String name, Type type, Type...args) {
String h = getHeader(name);
- return (T)beanSession.convertToType(null, h, beanSession.getClassMeta(c));
+ return (T)beanSession.convertToType(null, h, beanSession.getClassMeta(type, args));
}
/**
* Returns all the request headers as an {@link ObjectMap}.
* <p>
- * Altering entries in this map does not alter headers in the underlying request.
+ * Altering entries in this map does not alter headers in the underlying request.
*
* @return The request headers. Never <jk>null</jk>.
*/
@@ -312,9 +327,9 @@ public final class RestRequest extends HttpServletRequestWrapper {
* Returns the <code>Content-Type</code> header value on the request, stripped
* of any parameters such as <js>";charset=X"</js>.
* <p>
- * Example: <js>"text/json"</js>.
+ * Example: <js>"text/json"</js>.
* <p>
- * If the content type is not specified, and the content is specified via a
+ * If the content type is not specified, and the content is specified via a
* <code>&body</code> query parameter, the content type is assumed to be
* <js>"text/uon"</js>. Otherwise, the content type is assumed to be <js>"text/json"</js>.
*
@@ -333,7 +348,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the <code>Time-Zone</code> header value on the request if there is one.
* <p>
- * Example: <js>"GMT"</js>.
+ * Example: <js>"GMT"</js>.
*
* @return The <code>Time-Zone</code> header value on the request, or <jk>null</jk> if not present.
*/
@@ -362,8 +377,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
}
/**
- * Returns the charset specified on the <code>Content-Type</code> header, or
- * <js>"UTF-8"</js> if not specified.
+ * Returns the charset specified on the <code>Content-Type</code> header, or <js>"UTF-8"</js> if not specified.
*/
@Override /* ServletRequest */
public String getCharacterEncoding() {
@@ -430,11 +444,9 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns a query parameter value.
* <p>
- * Same as {@link #getParameter(String)} except only looks in the URL string,
- * not parameters from URL-Encoded FORM posts.
+ * Same as {@link #getParameter(String)} except only looks in the URL string, not parameters from URL-Encoded FORM posts.
* <p>
- * This method can be used to retrieve a parameter without triggering the underlying
- * servlet API to load and parse the request body.
+ * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.
*
* @param name The URL parameter name.
* @return The parameter value, or <jk>null</jk> if parameter not specified or has no value (e.g. <js>"&foo"</js>.
@@ -459,8 +471,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
}
/**
- * Same as {@link #getQueryParameter(String)} but returns the specified default
- * value if the query parameter was not specified.
+ * Same as {@link #getQueryParameter(String)} but returns the specified default value if the query parameter was not specified.
*
* @param name The URL parameter name.
* @param def The default value.
@@ -474,75 +485,109 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the specified query parameter value converted to a POJO.
* <p>
- * This method can be used to retrieve a parameter without triggering the underlying
- * servlet API to load and parse the request body.
+ * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into an integer.</jc>
+ * <jk>int</jk> myparam = req.getQueryParameter(<js>"myparam"</js>, <jk>int</jk>.<jk>class</jk>);
+ *
+ * <jc>// Parse into an int array.</jc>
+ * <jk>int</jk>[] myparam = req.getQueryParameter(<js>"myparam"</js>, <jk>int</jk>[].<jk>class</jk>);
+
+ * <jc>// Parse into a bean.</jc>
+ * MyBean myparam = req.getQueryParameter(<js>"myparam"</js>, MyBean.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of objects.</jc>
+ * List myparam = req.getQueryParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of object keys/values.</jc>
+ * Map myparam = req.getQueryParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>);
+ * </p>
*
* @param name The parameter name.
- * @param c The class type to convert the parameter value to.
- * @param def The default value if the parameter was not specified or is <jk>null</jk>.
+ * @param type The class type to convert the parameter value to.
* @param <T> The class type to convert the parameter value to.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getQueryParameter(String name, Class<T> c, T def) throws ParseException {
- return getQueryParameter(name, beanSession.getClassMeta(c), def);
+ public <T> T getQueryParameter(String name, Class<T> type) throws ParseException {
+ return getQueryParameter(name, beanSession.getClassMeta(type));
}
/**
- * Returns the specified query parameter value converted to a POJO.
- * <p>
- * This method can be used to retrieve a parameter without triggering the underlying
- * servlet API to load and parse the request body.
+ * Same as {@link #getQueryParameter(String, Class)} except returns a default value if not found.
*
* @param name The parameter name.
- * @param cm The class type to convert the parameter value to.
* @param def The default value if the parameter was not specified or is <jk>null</jk>.
+ * @param type The class type to convert the parameter value to.
* @param <T> The class type to convert the parameter value to.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getQueryParameter(String name, ClassMeta<T> cm, T def) throws ParseException {
- String val = getQueryParameter(name);
- if (val == null)
- return def;
- return parseParameter(val, cm);
+ public <T> T getQueryParameter(String name, T def, Class<T> type) throws ParseException {
+ return getQueryParameter(name, def, beanSession.getClassMeta(type));
}
/**
* Returns the specified query parameter value converted to a POJO.
* <p>
- * This method can be used to retrieve a parameter without triggering the underlying
- * servlet API to load and parse the request body.
+ * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.
+ * <p>
+ * Use this method if you want to parse into a parameterized <code>Map</code>/<code>Collection</code> object.
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into a linked-list of strings.</jc>
+ * Listt<String> myparam = req.getQueryParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of linked-lists of strings.</jc>
+ * Listt<List<String>> myparam = req.getQueryParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of string keys/values.</jc>
+ * Map<String,String> myparam = req.getQueryParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map containing string keys and values of lists containing beans.</jc>
+ * Map<String,List<MyBean>> myparam = req.getQueryParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);
+ * </p>
*
* @param name The parameter name.
- * @param c The class type to convert the parameter value to.
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @param <T> The class type to convert the parameter value to.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getQueryParameter(String name, Class<T> c) throws ParseException {
- return getQueryParameter(name, beanSession.getClassMeta(c));
+ public <T> T getQueryParameter(String name, Type type, Type...args) throws ParseException {
+ return (T)getQueryParameter(name, beanSession.getClassMeta(type, args));
}
/**
- * Same as {@link #getQueryParameter(String, Class)} except for use on multi-part parameters
- * (e.g. <js>"&key=1&key=2&key=3"</js> instead of <js>"&key=(1,2,3)"</js>).
- * <p>
- * This method must only be called when parsing into classes of type Collection or array.
+ * Same as {@link #getQueryParameter(String, Class)} except returns a default value if not found.
*
- * @param name The query parameter name.
- * @param c The class type to convert the parameter value to.
+ * @param name The parameter name.
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
+ * @param def The default value if the parameter was not specified or is <jk>null</jk>.
* @param <T> The class type to convert the parameter value to.
- * @return The query parameter value converted to the specified class type.
+ * @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getQueryParameters(String name, Class<T> c) throws ParseException {
- return getQueryParameters(name, beanSession.getClassMeta(c));
+ public <T> T getQueryParameter(String name, Object def, Type type, Type...args) throws ParseException {
+ return (T)getQueryParameter(name, def, getBeanSession().getClassMeta(type, args));
}
/**
- * Same as {@link #getQueryParameter(String, Class)} except works on parameterized
- * types such as those returned by {@link Method#getGenericParameterTypes()}
+ * Same as {@link #getQueryParameter(String, Class)} except for use on multi-part parameters
+ * (e.g. <js>"&key=1&key=2&key=3"</js> instead of <js>"&key=(1,2,3)"</js>).
+ * <p>
+ * This method must only be called when parsing into classes of type Collection or array.
*
* @param name The query parameter name.
* @param c The class type to convert the parameter value to.
@@ -550,93 +595,36 @@ public final class RestRequest extends HttpServletRequestWrapper {
* @return The query parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getQueryParameter(String name, Type c) throws ParseException {
- return (T)getQueryParameter(name, beanSession.getClassMeta(c));
+ public <T> T getQueryParameters(String name, Class<T> c) throws ParseException {
+ return getQueryParameters(name, beanSession.getClassMeta(c));
}
/**
- * Same as {@link #getQueryParameter(String, Type)} except for use on multi-part parameters
- * (e.g. <js>"&key=1&key=2&key=3"</js> instead of <js>"&key=(1,2,3)"</js>).
+ * Same as {@link #getQueryParameter(String, Type, Type...)} except for use on multi-part parameters
+ * (e.g. <js>"&key=1&key=2&key=3"</js> instead of <js>"&key=(1,2,3)"</js>).
* <p>
- * This method must only be called when parsing into classes of type Collection or array.
+ * This method must only be called when parsing into classes of type Collection or array.
*
* @param name The query parameter name.
- * @param c The class type to convert the parameter value to.
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @param <T> The class type to convert the parameter value to.
* @return The query parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getQueryParameters(String name, Type c) throws ParseException {
- return (T)getQueryParameters(name, beanSession.getClassMeta(c));
- }
-
- /**
- * Returns the specified query parameter value converted to a POJO.
- * <p>
- * This method can be used to retrieve a parameter without triggering the underlying
- * servlet API to load and parse the request body.
- *
- * @param name The parameter name.
- * @param cm The class type to convert the parameter value to.
- * @param <T> The class type to convert the parameter value to.
- * @return The parameter value converted to the specified class type.
- * @throws ParseException
- */
- public <T> T getQueryParameter(String name, ClassMeta<T> cm) throws ParseException {
-
- String val = getQueryParameter(name);
-
- if (cm.isPrimitive() && (val == null || val.isEmpty()))
- return cm.getPrimitiveDefault();
- return parseParameter(val, cm);
- }
-
- /**
- * Same as {@link #getQueryParameter(String, ClassMeta)} except for use on multi-part parameters
- * (e.g. <js>"&key=1&key=2&key=3"</js> instead of <js>"&key=(1,2,3)"</js>).
- * <p>
- * This method must only be called when parsing into classes of type Collection or array.
- *
- * @param name The parameter name.
- * @param cm The class type to convert the parameter value to.
- * @param <T> The class type to convert the parameter value to.
- * @return The parameter value converted to the specified class type.
- * @throws ParseException
- */
- @SuppressWarnings("rawtypes")
- public <T> T getQueryParameters(String name, ClassMeta<T> cm) throws ParseException {
- String[] p = getQueryParameters(name);
- if (p == null)
- return null;
- if (cm.isArray()) {
- List c = new ArrayList();
- for (int i = 0; i < p.length; i++)
- c.add(parseParameter(p[i], cm.getElementType()));
- return (T)ArrayUtils.toArray(c, cm.getElementType().getInnerClass());
- } else if (cm.isCollection()) {
- try {
- Collection c = (Collection)(cm.canCreateNewInstance() ? cm.newInstance() : new ObjectList());
- for (int i = 0; i < p.length; i++)
- c.add(parseParameter(p[i], cm.getElementType()));
- return (T)c;
- } catch (ParseException e) {
- throw e;
- } catch (Exception e) {
- // Typically an instantiation exception.
- throw new ParseException(e);
- }
- }
- throw new ParseException("Invalid call to getQueryParameters(String, ClassMeta). Class type must be a Collection or array.");
+ public <T> T getQueryParameters(String name, Type type, Type...args) throws ParseException {
+ return (T)getQueryParameters(name, getBeanSession().getClassMeta(type, args));
}
/**
* Returns the list of all query parameters with the specified name.
* <p>
- * Same as {@link #getParameterValues(String)} except only looks in the URL string,
- * not parameters from URL-Encoded FORM posts.
+ * Same as {@link #getParameterValues(String)} except only looks in the URL string, not parameters from URL-Encoded FORM posts.
* <p>
- * This method can be used to retrieve parameters without triggering the underlying
- * servlet API to load and parse the request body.
+ * This method can be used to retrieve parameters without triggering the underlying servlet API to load and parse the request body.
*
* @param name
* @return the list of query parameters, or <jk>null</jk> if the parameter does not exist.
@@ -648,9 +636,9 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns <jk>true</jk> if the query parameters on this request contains the specified entry.
* <p>
- * Note that this returns <jk>true</jk> even if the value is set to null (e.g. <js>"?key"</js>).
+ * Note that this returns <jk>true</jk> even if the value is set to null (e.g. <js>"?key"</js>).
* <p>
- * This method can be used to check the existence of a parameter without triggering the underlying
+ * This method can be used to check the existence of a parameter without triggering the underlying
* servlet API to load and parse the request body.
*
* @param name The URL parameter name.
@@ -676,10 +664,9 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Equivalent to {@link #getParameterMap()}, but only looks for query parameters in the URL, not form posts.
* <p>
- * This method can be used to retrieve query parameters without triggering the underlying
- * servlet API to load and parse the request body.
+ * This method can be used to retrieve query parameters without triggering the underlying servlet API to load and parse the request body.
* <p>
- * This object is modifiable.
+ * This object is modifiable.
*
* @return The query parameters as a modifiable map.
*/
@@ -690,10 +677,9 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Equivalent to {@link #getParameterNames()}, but only looks for query parameters in the URL, not form posts.
* <p>
- * This method can be used to retrieve query parameters without triggering the underlying
- * servlet API to load and parse the request body.
+ * This method can be used to retrieve query parameters without triggering the underlying servlet API to load and parse the request body.
* <p>
- * This object is modifiable.
+ * This object is modifiable.
*
* @return An iterator of query parameter names.
*/
@@ -701,6 +687,49 @@ public final class RestRequest extends HttpServletRequestWrapper {
return queryParams.keySet().iterator();
}
+ /* Workhorse method */
+ <T> T getQueryParameter(String name, T def, ClassMeta<T> cm) throws ParseException {
+ String val = getQueryParameter(name);
+ if (val == null)
+ return def;
+ return parseParameter(val, cm);
+ }
+
+ /* Workhorse method */
+ <T> T getQueryParameter(String name, ClassMeta<T> cm) throws ParseException {
+ String val = getQueryParameter(name);
+ if (cm.isPrimitive() && (val == null || val.isEmpty()))
+ return cm.getPrimitiveDefault();
+ return parseParameter(val, cm);
+ }
+
+ /* Workhorse method */
+ @SuppressWarnings("rawtypes")
+ <T> T getQueryParameters(String name, ClassMeta<T> cm) throws ParseException {
+ String[] p = getQueryParameters(name);
+ if (p == null)
+ return null;
+ if (cm.isArray()) {
+ List c = new ArrayList();
+ for (int i = 0; i < p.length; i++)
+ c.add(parseParameter(p[i], cm.getElementType()));
+ return (T)ArrayUtils.toArray(c, cm.getElementType().getInnerClass());
+ } else if (cm.isCollection()) {
+ try {
+ Collection c = (Collection)(cm.canCreateNewInstance() ? cm.newInstance() : new ObjectList());
+ for (int i = 0; i < p.length; i++)
+ c.add(parseParameter(p[i], cm.getElementType()));
+ return (T)c;
+ } catch (ParseException e) {
+ throw e;
+ } catch (Exception e) {
+ // Typically an instantiation exception.
+ throw new ParseException(e);
+ }
+ }
+ throw new ParseException("Invalid call to getQueryParameters(String, ClassMeta). Class type must be a Collection or array.");
+ }
+
//--------------------------------------------------------------------------------
// Form data parameters
//--------------------------------------------------------------------------------
@@ -720,17 +749,18 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns a form data parameter value.
* <p>
- * Parameter lookup is case-insensitive (consistent with WAS, but differs from Tomcat).
- * <p>
- * <i>Note:</i> Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by
- * the underlying servlet API.
+ * Parameter lookup is case-insensitive (consistent with WAS, but differs from Tomcat).
* <p>
- * <i>Note:</i> This method returns the raw unparsed value, and differs from calling <code>getFormDataParameter(name, String.<jk>class</js>)</code>
- * which will convert the value from UON notation:
+ * <h5 class='section'>Notes:</h5>
* <ul>
- * <li><js>"\u0000"</js> => <jk>null</jk>
- * <li><js>"$s(foo)"</js> => <js>"foo"</js>
- * <li><js>"(foo)"</js> => <js>"foo"</js>
+ * <li>Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by the underlying servlet API.
+ * <li>This method returns the raw unparsed value, and differs from calling <code>getFormDataParameter(name, String.<jk>class</js>)</code>
+ * which will convert the value from UON notation:
+ * <ul>
+ * <li><js>"\u0000"</js> => <jk>null</jk>
+ * <li><js>"$s(foo)"</js> => <js>"foo"</js>
+ * <li><js>"(foo)"</js> => <js>"foo"</js>
+ * </ul>
* </ul>
*
* @param name The form data parameter name.
@@ -764,152 +794,156 @@ public final class RestRequest extends HttpServletRequestWrapper {
* Returns the specified form data parameter value converted to a POJO using the
* {@link UrlEncodingParser} registered with this servlet.
* <p>
- * <i>Note:</i> Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by
- * the underlying servlet API.
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into an integer.</jc>
+ * <jk>int</jk> myparam = req.getFormDataParameter(<js>"myparam"</js>, <jk>int</jk>.<jk>class</jk>);
*
- * @param name The parameter name.
- * @param c The class type to convert the parameter value to.
- * @param def The default value if the parameter was not specified or is <jk>null</jk>.
- * @param <T> The class type to convert the parameter value to.
- * @return The parameter value converted to the specified class type.
- * @throws ParseException
- */
- public <T> T getFormDataParameter(String name, Class<T> c, T def) throws ParseException {
- return getFormDataParameter(name, beanSession.getClassMeta(c), def);
- }
+ * <jc>// Parse into an int array.</jc>
+ * <jk>int</jk>[] myparam = req.getFormDataParameter(<js>"myparam"</js>, <jk>int</jk>[].<jk>class</jk>);
- /**
- * Returns the specified form data parameter value converted to a POJO using the
- * {@link UrlEncodingParser} registered with this servlet.
- * <p>
- * <i>Note:</i> Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by
- * the underlying servlet API.
- * <p>
- * Unlike {@link #getFormDataParameter(String, Class, Object)}, this method can be used to parse parameters
- * of complex types involving JCF classes.
- * <p class='bcode'>
- * ClassMeta<Map<String,Integer>> cm = request.getBeanContext().getMapClassMeta(TreeMap.<jk>class</jk>, String.<jk>class</jk>, Integer.<jk>class</jk>);
- * Map<String,Integer> m = request.getFormDataParameter(<js>"myParameter"</js>, cm, <jk>new</jk> TreeMap<String,Integer>());
+ * <jc>// Parse into a bean.</jc>
+ * MyBean myparam = req.getFormDataParameter(<js>"myparam"</js>, MyBean.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of objects.</jc>
+ * List myparam = req.getFormDataParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of object keys/values.</jc>
+ * Map myparam = req.getFormDataParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>);
* </p>
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by the underlying servlet API.
+ * </ul>
*
* @param name The parameter name.
- * @param cm The class type to convert the parameter value to.
- * @param def The default value if the parameter was not specified or is <jk>null</jk>.
+ * @param type The class type to convert the parameter value to.
* @param <T> The class type to convert the parameter value to.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getFormDataParameter(String name, ClassMeta<T> cm, T def) throws ParseException {
- String val = getParameter(name);
- if (val == null)
- return def;
- return parseParameter(val, cm);
+ public <T> T getFormDataParameter(String name, Class<T> type) throws ParseException {
+ return getFormDataParameter(name, beanSession.getClassMeta(type));
}
/**
- * Returns the specified form data parameter value converted to a POJO using the
- * {@link UrlEncodingParser} registered with this servlet.
- * <p>
- * <i>Note:</i> Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by
- * the underlying servlet API.
+ * Same as {@link #getFormDataParameter(String, Class)} except returns a default value if not specified.
*
* @param name The parameter name.
- * @param c The class type to convert the parameter value to.
+ * @param def The default value if the parameter was not specified or is <jk>null</jk>.
+ * @param type The class type to convert the parameter value to.
* @param <T> The class type to convert the parameter value to.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getFormDataParameter(String name, Class<T> c) throws ParseException {
- return getFormDataParameter(name, beanSession.getClassMeta(c));
+ public <T> T getFormDataParameter(String name, T def, Class<T> type) throws ParseException {
+ return getFormDataParameter(name, def, beanSession.getClassMeta(type));
}
/**
* Same as {@link #getFormDataParameter(String, Class)} except for use on multi-part parameters
* (e.g. <js>"key=1&key=2&key=3"</js> instead of <js>"key=(1,2,3)"</js>)
* <p>
- * This method must only be called when parsing into classes of type Collection or array.
+ * This method must only be called when parsing into classes of type Collection or array.
*
* @param name The parameter name.
- * @param c The class type to convert the parameter value to.
+ * @param type The class type to convert the parameter value to.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getFormDataParameters(String name, Class<T> c) throws ParseException {
- return getFormDataParameters(name, beanSession.getClassMeta(c));
+ public <T> T getFormDataParameters(String name, Class<T> type) throws ParseException {
+ return getFormDataParameters(name, beanSession.getClassMeta(type));
}
/**
- * Same as {@link #getFormDataParameter(String, Class)} except works on parameterized
- * types such as those returned by {@link Method#getGenericParameterTypes()}
+ * Returns the specified form data parameter value converted to a POJO using the
+ * {@link UrlEncodingParser} registered with this servlet.
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by the underlying servlet API.
+ * <li>Use this method if you want to parse into a parameterized <code>Map</code>/<code>Collection</code> object.
+ * </ul>
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into a linked-list of strings.</jc>
+ * Listt<String> myparam = req.getFormDataParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of linked-lists of strings.</jc>
+ * Listt<List<String>> myparam = req.getFormDataParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of string keys/values.</jc>
+ * Map<String,String> myparam = req.getFormDataParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map containing string keys and values of lists containing beans.</jc>
+ * Map<String,List<MyBean>> myparam = req.getFormDataParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);
+ * </p>
*
* @param name The parameter name.
- * @param c The class type to convert the parameter value to.
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getFormDataParameter(String name, Type c) throws ParseException {
- return (T)getFormDataParameter(name, beanSession.getClassMeta(c));
+ public <T> T getFormDataParameter(String name, Type type, Type...args) throws ParseException {
+ return (T)getFormDataParameter(name, beanSession.getClassMeta(type, args));
}
/**
- * Same as {@link #getFormDataParameter(String, Class)} except for use on multi-part parameters
+ * Same as {@link #getFormDataParameter(String, Type, Type...)} except for use on multi-part parameters
* (e.g. <js>"key=1&key=2&key=3"</js> instead of <js>"key=(1,2,3)"</js>)
* <p>
- * This method must only be called when parsing into classes of type Collection or array.
+ * This method must only be called when parsing into classes of type Collection or array.
*
* @param name The parameter name.
- * @param c The class type to convert the parameter value to.
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @return The parameter value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getFormDataParameters(String name, Type c) throws ParseException {
- return (T)getFormDataParameters(name, beanSession.getClassMeta(c));
+ public <T> T getFormDataParameters(String name, Type type, Type...args) throws ParseException {
+ return (T)getFormDataParameters(name, beanSession.getClassMeta(type, args));
}
/**
- * Returns the specified form data parameter value converted to a POJO using the
- * {@link UrlEncodingParser} registered with this servlet.
- * <p>
- * <i>Note:</i> Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by
- * the underlying servlet API.
+ * Returns <jk>true</jk> if the form data parameters on this request contains the specified entry.
* <p>
- * Unlike {@link #getFormDataParameter(String, Class)}, this method can be used to parse parameters
- * of complex types involving JCF classes.
- * <p class='bcode'>
- * ClassMeta<Map<String,Integer>> cm = request.getBeanContext().getMapClassMeta(TreeMap.<jk>class</jk>, String.<jk>class</jk>, Integer.<jk>class</jk>);
- * Map<String,Integer> m = request.getFormDataParameter(<js>"myParameter"</js>, cm);
- * </p>
+ * Note that this returns <jk>true</jk> even if the value is set to null (e.g. <js>"?key"</js>).
*
- * @param name The parameter name.
- * @param cm The class type to convert the parameter value to.
- * @param <T> The class type to convert the parameter value to.
- * @return The parameter value converted to the specified class type.
- * @throws ParseException
+ * @param name The URL parameter name.
+ * @return <jk>true</jk> if the URL parameters on this request contains the specified entry.
*/
- public <T> T getFormDataParameter(String name, ClassMeta<T> cm) throws ParseException {
+ public boolean hasFormDataParameter(String name) {
+ return getParameterMap().containsKey(name);
+ }
+ /* Workhorse method */
+ <T> T getFormDataParameter(String name, T def, ClassMeta<T> cm) throws ParseException {
String val = getParameter(name);
+ if (val == null)
+ return def;
+ return parseParameter(val, cm);
+ }
+ /* Workhorse method */
+ <T> T getFormDataParameter(String name, ClassMeta<T> cm) throws ParseException {
+ String val = getParameter(name);
if (cm.isPrimitive() && (val == null || val.isEmpty()))
return cm.getPrimitiveDefault();
-
return parseParameter(val, cm);
}
- /**
- * Same as {@link #getFormDataParameter(String, ClassMeta)} except for use on multi-part parameters
- * (e.g. <js>"key=1&key=2&key=3"</js> instead of <js>"key=(1,2,3)"</js>)
- * <p>
- * This method must only be called when parsing into classes of type Collection or array.
- *
- * @param name The parameter name.
- * @param cm The class type to convert the parameter value to.
- * @param <T> The class type to convert the parameter value to.
- * @return The parameter value converted to the specified class type.
- * @throws ParseException
- */
+ /* Workhorse method */
@SuppressWarnings("rawtypes")
- public <T> T getFormDataParameters(String name, ClassMeta<T> cm) throws ParseException {
+ <T> T getFormDataParameters(String name, ClassMeta<T> cm) throws ParseException {
String[] p = getParameterValues(name);
if (p == null)
return null;
@@ -934,18 +968,6 @@ public final class RestRequest extends HttpServletRequestWrapper {
throw new ParseException("Invalid call to getParameters(String, ClassMeta). Class type must be a Collection or array.");
}
- /**
- * Returns <jk>true</jk> if the form data parameters on this request contains the specified entry.
- * <p>
- * Note that this returns <jk>true</jk> even if the value is set to null (e.g. <js>"?key"</js>).
- *
- * @param name The URL parameter name.
- * @return <jk>true</jk> if the URL parameters on this request contains the specified entry.
- */
- public boolean hasFormDataParameter(String name) {
- return getParameterMap().containsKey(name);
- }
-
//--------------------------------------------------------------------------------
// Path parameters
//--------------------------------------------------------------------------------
@@ -953,7 +975,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Sets a path parameter value.
* <p>
- * A path parameter is a variable in the path pattern such as <js>"/{foo}"</js>
+ * A path parameter is a variable in the path pattern such as <js>"/{foo}"</js>
*
* @param name The parameter name.
* @param value The parameter value.
@@ -967,7 +989,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns a path parameter value.
* <p>
- * A path parameter is a variable in the path pattern such as <js>"/{foo}"</js>
+ * A path parameter is a variable in the path pattern such as <js>"/{foo}"</js>
*
* @param name The parameter name.
* @return The paramter value, or <jk>null</jk> if path parameter not specified.
@@ -979,44 +1001,74 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the specified path parameter converted to a POJO.
* <p>
- * The type can be any POJO type convertable from a <code>String</code> (See <a class='doclink' href='package-summary.html#PojosConvertableFromString'>POJOs Convertable From Strings</a>).
+ * The type can be any POJO type convertable from a <code>String</code> (See <a class="doclink" href="package-summary.html#PojosConvertableFromString">POJOs Convertable From Strings</a>).
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into an integer.</jc>
+ * <jk>int</jk> myparam = req.getPathParameter(<js>"myparam"</js>, <jk>int</jk>.<jk>class</jk>);
*
- * @param name The attribute name.
- * @param c The class type to convert the attribute value to.
- * @param <T> The class type to convert the attribute value to.
- * @return The attribute value converted to the specified class type.
- * @throws ParseException
- */
- public <T> T getPathParameter(String name, Class<T> c) throws ParseException {
- return getPathParameter(name, beanSession.getClassMeta(c));
- }
+ * <jc>// Parse into an int array.</jc>
+ * <jk>int</jk>[] myparam = req.getPathParameter(<js>"myparam"</js>, <jk>int</jk>[].<jk>class</jk>);
- /**
- * Same as {@link #getPathParameter(String, Class)} except works on parameterized
- * types such as those returned by {@link Method#getGenericParameterTypes()}
+ * <jc>// Parse into a bean.</jc>
+ * MyBean myparam = req.getPathParameter(<js>"myparam"</js>, MyBean.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of objects.</jc>
+ * List myparam = req.getPathParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of object keys/values.</jc>
+ * Map myparam = req.getPathParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>);
+ * </p>
*
* @param name The attribute name.
- * @param c The class type to convert the attribute value to.
+ * @param type The class type to convert the attribute value to.
* @param <T> The class type to convert the attribute value to.
* @return The attribute value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getPathParameter(String name, Type c) throws ParseException {
- return (T)getPathParameter(name, beanSession.getClassMeta(c));
+ public <T> T getPathParameter(String name, Class<T> type) throws ParseException {
+ return getPathParameter(name, beanSession.getClassMeta(type));
}
/**
* Returns the specified path parameter converted to a POJO.
* <p>
- * The type can be any POJO type convertable from a <code>String</code> (See <a class='doclink' href='package-summary.html#PojosConvertableFromString'>POJOs Convertable From Strings</a>).
+ * The type can be any POJO type convertable from a <code>String</code> (See <a class="doclink" href="package-summary.html#PojosConvertableFromString">POJOs Convertable From Strings</a>).
+ * <p>
+ * Use this method if you want to parse into a parameterized <code>Map</code>/<code>Collection</code> object.
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into a linked-list of strings.</jc>
+ * Listt<String> myparam = req.getPathParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of linked-lists of strings.</jc>
+ * Listt<List<String>> myparam = req.getPathParameter(<js>"myparam"</js>, LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of string keys/values.</jc>
+ * Map<String,String> myparam = req.getPathParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map containing string keys and values of lists containing beans.</jc>
+ * Map<String,List<MyBean>> myparam = req.getPathParameter(<js>"myparam"</js>, TreeMap.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);
+ * </p>
*
* @param name The attribute name.
- * @param cm The class type to convert the attribute value to.
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @param <T> The class type to convert the attribute value to.
* @return The attribute value converted to the specified class type.
* @throws ParseException
*/
- public <T> T getPathParameter(String name, ClassMeta<T> cm) throws ParseException {
+ public <T> T getPathParameter(String name, Type type, Type...args) throws ParseException {
+ return (T)getPathParameter(name, beanSession.getClassMeta(type, args));
+ }
+
+ /* Workhorse method */
+ <T> T getPathParameter(String name, ClassMeta<T> cm) throws ParseException {
Object attr = getPathParameter(name);
T t = null;
if (attr != null)
@@ -1031,8 +1083,70 @@ public final class RestRequest extends HttpServletRequestWrapper {
//--------------------------------------------------------------------------------
/**
- * Same as {@link #getBody(ClassMeta)}, except a shortcut for passing in regular {@link Class} objects
- * instead of having to look up {@link ClassMeta} objects.
+ * Reads the input from the HTTP request as JSON, XML, or HTML and converts the input to a POJO.
+ * <p>
+ * If {@code allowHeaderParams} init parameter is <jk>true</jk>, then first looks for {@code &body=xxx} in the URL query string.
+ * <p>
+ * If type is <jk>null</jk> or <code>Object.<jk>class</jk></code>, then the actual type will be determined automatically based on the following input:
+ * <table class='styled'>
+ * <tr><th>Type</th><th>JSON input</th><th>XML input</th><th>Return type</th></tr>
+ * <tr>
+ * <td>object</td>
+ * <td><js>"{...}"</js></td>
+ * <td><code><xt><object></xt>...<xt></object></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'object'</xs><xt>></xt>...<xt></x></xt></code></td>
+ * <td>{@link ObjectMap}</td>
+ * </tr>
+ * <tr>
+ * <td>array</td>
+ * <td><js>"[...]"</js></td>
+ * <td><code><xt><array></xt>...<xt></array></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'array'</xs><xt>></xt>...<xt></x></xt></code></td>
+ * <td>{@link ObjectList}</td>
+ * </tr>
+ * <tr>
+ * <td>string</td>
+ * <td><js>"'...'"</js></td>
+ * <td><code><xt><string></xt>...<xt></string></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'string'</xs><xt>></xt>...<xt></x></xt></code></td>
+ * <td>{@link String}</td>
+ * </tr>
+ * <tr>
+ * <td>number</td>
+ * <td><code>123</code></td>
+ * <td><code><xt><number></xt>123<xt></number></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'number'</xs><xt>></xt>...<xt></x></xt></code></td>
+ * <td>{@link Number}</td>
+ * </tr>
+ * <tr>
+ * <td>boolean</td>
+ * <td><jk>true</jk></td>
+ * <td><code><xt><boolean></xt>true<xt></boolean></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'boolean'</xs><xt>></xt>...<xt></x></xt></code></td>
+ * <td>{@link Boolean}</td>
+ * </tr>
+ * <tr>
+ * <td>null</td>
+ * <td><jk>null</jk> or blank</td>
+ * <td><code><xt><null/></xt></code> or blank<br><code><xt><x</xt> <xa>type</xa>=<xs>'null'</xs><xt>/></xt></code></td>
+ * <td><jk>null</jk></td>
+ * </tr>
+ * </table>
+ * <p>
+ * Refer to <a class="doclink" href="../../../../overview-summary.html#Core.PojoCategories">POJO Categories</a> for a complete definition of supported POJOs.
+ * <p>
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into an integer.</jc>
+ * <jk>int</jk> body = req.getBody(<jk>int</jk>.<jk>class</jk>);
+ *
+ * <jc>// Parse into an int array.</jc>
+ * <jk>int</jk>[] body = req.getBody(<jk>int</jk>[].<jk>class</jk>);
+
+ * <jc>// Parse into a bean.</jc>
+ * MyBean body = req.getBody(MyBean.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of objects.</jc>
+ * List body = req.getBody(LinkedList.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of object keys/values.</jc>
+ * Map body = req.getBody(TreeMap.<jk>class</jk>);
+ * </p>
*
* @param type The class type to instantiate.
* @param <T> The class type to instantiate.
@@ -1045,124 +1159,39 @@ public final class RestRequest extends HttpServletRequestWrapper {
}
/**
- * Same as {@link #getBody(Class)} except works on parameterized
- * types such as those returned by {@link Method#getGenericParameterTypes()}
- *
- * @param type The class type to instantiate.
- * @param <T> The class type to instantiate.
- * @return The input parsed to a POJO.
- */
- public <T> T getBody(Type type) {
- return (T)getBody(beanSession.getClassMeta(type));
- }
-
- /**
* Reads the input from the HTTP request as JSON, XML, or HTML and converts the input to a POJO.
* <p>
- * If {@code allowHeaderParams} init parameter is <jk>true</jk>, then first looks
- * for {@code &body=xxx} in the URL query string.
- * <p>
- * If type is <jk>null</jk> or <code>Object.<jk>class</jk></code>, then the actual type will be determined automatically based on the
- * following input:
- * <table class='styled'>
- * <tr><th>Type</th><th>JSON input</th><th>XML input</th><th>Return type</th></tr>
- * <tr>
- * <td>object</td>
- * <td><js>"{...}"</js></td>
- * <td><code><xt><object></xt>...<xt></object></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'object'</xs><xt>></xt>...<xt></x></xt></code></td>
- * <td>{@link ObjectMap}</td>
- * </tr>
- * <tr>
- * <td>array</td>
- * <td><js>"[...]"</js></td>
- * <td><code><xt><array></xt>...<xt></array></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'array'</xs><xt>></xt>...<xt></x></xt></code></td>
- * <td>{@link ObjectList}</td>
- * </tr>
- * <tr>
- * <td>string</td>
- * <td><js>"'...'"</js></td>
- * <td><code><xt><string></xt>...<xt></string></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'string'</xs><xt>></xt>...<xt></x></xt></code></td>
- * <td>{@link String}</td>
- * </tr>
- * <tr>
- * <td>number</td>
- * <td><code>123</code></td>
- * <td><code><xt><number></xt>123<xt></number></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'number'</xs><xt>></xt>...<xt></x></xt></code></td>
- * <td>{@link Number}</td>
- * </tr>
- * <tr>
- * <td>boolean</td>
- * <td><jk>true</jk></td>
- * <td><code><xt><boolean></xt>true<xt></boolean></xt></code><br><code><xt><x</xt> <xa>type</xa>=<xs>'boolean'</xs><xt>></xt>...<xt></x></xt></code></td>
- * <td>{@link Boolean}</td>
- * </tr>
- * <tr>
- * <td>null</td>
- * <td><jk>null</jk> or blank</td>
- * <td><code><xt><null/></xt></code> or blank<br><code><xt><x</xt> <xa>type</xa>=<xs>'null'</xs><xt>/></xt></code></td>
- * <td><jk>null</jk></td>
- * </tr>
- * </table>
- * <p>
- * Refer to <a href='../../../../overview-summary.html#Core.PojoCategories' class='doclink'>POJO Categories</a> for a complete definition of supported POJOs.
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * <jc>// Parse into a linked-list of strings.</jc>
+ * Listt<String> body = req.getBody(LinkedList.<jk>class</jk>, String.<jk>class</jk>);
*
- * @param type The class type to instantiate.
+ * <jc>// Parse into a linked-list of linked-lists of strings.</jc>
+ * Listt<List<String>> body = req.getBody(LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of string keys/values.</jc>
+ * Map<String,String> body = req.getBody(TreeMap.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map containing string keys and values of lists containing beans.</jc>
+ * Map<String,List<MyBean>> body = req.getBody(TreeMap.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);
+ * </p>
+ *
+ * @param type The type of object to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @param <T> The class type to instantiate.
* @return The input parsed to a POJO.
- * @throws RestException If a problem occurred trying to read the input.
*/
- public <T> T getBody(ClassMeta<T> type) throws RestException {
-
- try {
- if (type.isReader())
- return (T)getReader();
-
- if (type.isInputStream())
- return (T)getInputStream();
-
- TimeZone timeZone = getTimeZone();
- Locale locale = getLocale();
- ParserMatch pm = getParserMatch();
-
- if (pm != null) {
- Parser p = pm.getParser();
- MediaType mediaType = pm.getMediaType();
- try {
- properties.append("mediaType", mediaType).append("characterEncoding", getCharacterEncoding());
- if (! p.isReaderParser()) {
- InputStreamParser p2 = (InputStreamParser)p;
- ParserSession session = p2.createSession(getInputStream(), properties, getJavaMethod(), getServlet(), locale, timeZone, mediaType);
- return p2.parse(session, type);
- }
- ReaderParser p2 = (ReaderParser)p;
- ParserSession session = p2.createSession(getUnbufferedReader(), properties, getJavaMethod(), getServlet(), locale, timeZone, mediaType);
- return p2.parse(session, type);
- } catch (ParseException e) {
- throw new RestException(SC_BAD_REQUEST,
- "Could not convert request body content to class type ''{0}'' using parser ''{1}''.",
- type, p.getClass().getName()
- ).initCause(e);
- }
- }
-
- throw new RestException(SC_UNSUPPORTED_MEDIA_TYPE,
- "Unsupported media-type in request header ''Content-Type'': ''{0}''\n\tSupported media-types: {1}",
- getHeader("Content-Type"), parserGroup.getSupportedMediaTypes()
- );
-
- } catch (IOException e) {
- throw new RestException(SC_INTERNAL_SERVER_ERROR,
- "I/O exception occurred while attempting to handle request ''{0}''.",
- getDescription()
- ).initCause(e);
- }
+ public <T> T getBody(Type type, Type...args) {
+ return (T)getBody(beanSession.getClassMeta(type, args));
}
/**
* Returns the HTTP body content as a plain string.
* <p>
- * If {@code allowHeaderParams} init parameter is true, then first looks
- * for {@code &body=xxx} in the URL query string.
+ * If {@code allowHeaderParams} init parameter is true, then first looks for {@code &body=xxx} in the URL query string.
*
* @return The incoming input from the connection as a plain string.
* @throws IOException If a problem occurred trying to read from the reader.
@@ -1177,10 +1206,9 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the HTTP body content as a {@link Reader}.
* <p>
- * If {@code allowHeaderParams} init parameter is true, then first looks
- * for {@code &body=xxx} in the URL query string.
+ * If {@code allowHeaderParams} init parameter is true, then first looks for {@code &body=xxx} in the URL query string.
* <p>
- * Automatically handles GZipped input streams.
+ * Automatically handles GZipped input streams.
*/
@Override /* ServletRequest */
public BufferedReader getReader() throws IOException {
@@ -1207,7 +1235,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the HTTP body content as an {@link InputStream}.
* <p>
- * Automatically handles GZipped input streams.
+ * Automatically handles GZipped input streams.
*
* @return The negotiated input stream.
* @throws IOException If any error occurred while trying to get the input stream or wrap it
@@ -1235,6 +1263,54 @@ public final class RestRequest extends HttpServletRequestWrapper {
return is;
}
+ /* Workhorse method */
+ <T> T getBody(ClassMeta<T> cm) throws RestException {
+
+ try {
+ if (cm.isReader())
+ return (T)getReader();
+
+ if (cm.isInputStream())
+ return (T)getInputStream();
+
+ TimeZone timeZone = getTimeZone();
+ Locale locale = getLocale();
+ ParserMatch pm = getParserMatch();
+
+ if (pm != null) {
+ Parser p = pm.getParser();
+ MediaType mediaType = pm.getMediaType();
+ try {
+ properties.append("mediaType", mediaType).append("characterEncoding", getCharacterEncoding());
+ if (! p.isReaderParser()) {
+ InputStreamParser p2 = (InputStreamParser)p;
+ ParserSession session = p2.createSession(getInputStream(), properties, getJavaMethod(), getServlet(), locale, timeZone, mediaType);
+ return p2.parseSession(session, cm);
+ }
+ ReaderParser p2 = (ReaderParser)p;
+ ParserSession session = p2.createSession(getUnbufferedReader(), properties, getJavaMethod(), getServlet(), locale, timeZone, mediaType);
+ return p2.parseSession(session, cm);
+ } catch (ParseException e) {
+ throw new RestException(SC_BAD_REQUEST,
+ "Could not convert request body content to class type ''{0}'' using parser ''{1}''.",
+ cm, p.getClass().getName()
+ ).initCause(e);
+ }
+ }
+
+ throw new RestException(SC_UNSUPPORTED_MEDIA_TYPE,
+ "Unsupported media-type in request header ''Content-Type'': ''{0}''\n\tSupported media-types: {1}",
+ getHeader("Content-Type"), parserGroup.getSupportedMediaTypes()
+ );
+
+ } catch (IOException e) {
+ throw new RestException(SC_INTERNAL_SERVER_ERROR,
+ "I/O exception occurred while attempting to handle request ''{0}''.",
+ getDescription()
+ ).initCause(e);
+ }
+ }
+
//--------------------------------------------------------------------------------
// URI-related methods
//--------------------------------------------------------------------------------
@@ -1251,9 +1327,9 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the value {@link #getPathInfo()} split on the <js>'/'</js> character.
* <p>
- * If path info is <jk>null</jk>, returns an empty list.
+ * If path info is <jk>null</jk>, returns an empty list.
* <p>
- * URL-encoded characters in segments are automatically decoded by this method.
+ * URL-encoded characters in segments are automatically decoded by this method.
*
* @return The decoded segments, or an empty list if path info is <jk>null</jk>.
*/
@@ -1310,44 +1386,44 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the decoded remainder of the URL following any path pattern matches.
* <p>
- * The behavior of path remainder is shown below given the path pattern "/foo/*":
- * <p>
- * <table class='styled'>
- * <tr>
- * <th>URL</th>
- * <th>Path Remainder</th>
- * </tr>
- * <tr>
- * <th><code>/foo</code></th>
- * <th><jk>null</jk></th>
- * </tr>
- * <tr>
- * <th><code>/foo/</code></th>
- * <th><js>""</js></th>
- * </tr>
- * <tr>
- * <th><code>/foo//</code></th>
- * <th><js>"/"</js></th>
- * </tr>
- * <tr>
- * <th><code>/foo///</code></th>
- * <th><js>"//"</js></th>
- * </tr>
- * <tr>
- * <th><code>/foo/a/b</code></th>
- * <th><js>"a/b"</js></th>
- * </tr>
- * <tr>
- * <th><code>/foo//a/b/</code></th>
- * <th><js>"/a/b/"</js></th>
- * </tr>
- * <tr>
- * <th><code>/foo/a%2Fb</code></th>
- * <th><js>"a/b"</js></th>
- * </tr>
- * </table>
- *
- * <h6 class='topic'>Example:</h6>
+ * The behavior of path remainder is shown below given the path pattern "/foo/*":
+ * <p>
+ * <table class='styled'>
+ * <tr>
+ * <th>URL</th>
+ * <th>Path Remainder</th>
+ * </tr>
+ * <tr>
+ * <td><code>/foo</code></td>
+ * <td><jk>null</jk></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo/</code></td>
+ * <td><js>""</js></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo//</code></td>
+ * <td><js>"/"</js></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo///</code></td>
+ * <td><js>"//"</js></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo/a/b</code></td>
+ * <td><js>"a/b"</js></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo//a/b/</code></td>
+ * <td><js>"/a/b/"</js></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo/a%2Fb</code></td>
+ * <td><js>"a/b"</js></td>
+ * </tr>
+ * </table>
+ *
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// REST method</jc>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>,path=<js>"/foo/{bar}/*"</js>)
@@ -1377,39 +1453,39 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the URI of the parent resource.
* <p>
- * Trailing slashes in the path are ignored by this method.
- * <p>
- * The behavior is shown below:
- * <table class='styled'>
- * <tr>
- * <th>getRequestURI</th>
- * <th>getRequestParentURI</th>
- * </tr>
- * <tr>
- * <th><code>/foo/bar</code></th>
- * <th><code>/foo</code></th>
- * </tr>
- * <tr>
- * <th><code>/foo/bar?baz=bing</code></th>
- * <th><code>/foo</code></th>
- * </tr>
- * <tr>
- * <th><code>/foo/bar/</code></th>
- * <th><code>/foo</code></th>
- * </tr>
- * <tr>
- * <th><code>/foo/bar//</code></th>
- * <th><code>/foo</code></th>
- * </tr>
- * <tr>
- * <th><code>/foo//bar//</code></th>
- * <th><code>/foo/</code></th>
- * </tr>
- * <tr>
- * <th><code>/foo</code></th>
- * <th>/</th>
- * </tr>
- * </table>
+ * Trailing slashes in the path are ignored by this method.
+ * <p>
+ * The behavior is shown below:
+ * <table class='styled'>
+ * <tr>
+ * <th>getRequestURI</th>
+ * <th>getRequestParentURI</th>
+ * </tr>
+ * <tr>
+ * <td><code>/foo/bar</code></td>
+ * <td><code>/foo</code></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo/bar?baz=bing</code></td>
+ * <td><code>/foo</code></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo/bar/</code></td>
+ * <td><code>/foo</code></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo/bar//</code></td>
+ * <td><code>/foo</code></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo//bar//</code></td>
+ * <td><code>/foo/</code></td>
+ * </tr>
+ * <tr>
+ * <td><code>/foo</code></td>
+ * <td>/</td>
+ * </tr>
+ * </table>
*
* @return The request parent URI.
*/
@@ -1483,7 +1559,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the localized servlet title.
* <p>
- * Equivalent to calling {@link RestServlet#getTitle(RestRequest)} with this object.
+ * Equivalent to calling {@link RestServlet#getTitle(RestRequest)} with this object.
*
* @return The localized servlet label.
*/
@@ -1494,7 +1570,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the localized servlet description.
* <p>
- * Equivalent to calling {@link RestServlet#getDescription(RestRequest)} with this object.
+ * Equivalent to calling {@link RestServlet#getDescription(RestRequest)} with this object.
*
* @return The localized servlet description.
*/
@@ -1505,7 +1581,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the localized method summary.
* <p>
- * Equivalent to calling {@link RestServlet#getMethodSummary(String, RestRequest)} with this object.
+ * Equivalent to calling {@link RestServlet#getMethodSummary(String, RestRequest)} with this object.
*
* @return The localized method description.
*/
@@ -1516,7 +1592,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the localized method description.
* <p>
- * Equivalent to calling {@link RestServlet#getMethodDescription(String, RestRequest)} with this object.
+ * Equivalent to calling {@link RestServlet#getMethodDescription(String, RestRequest)} with this object.
*
* @return The localized method description.
*/
@@ -1591,8 +1667,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the method of this request.
* <p>
- * If <code>allowHeaderParams</code> init parameter is <jk>true</jk>, then first looks
- * for <code>&method=xxx</code> in the URL query string.
+ * If <code>allowHeaderParams</code> init parameter is <jk>true</jk>, then first looks for <code>&method=xxx</code> in the URL query string.
*/
@Override /* ServletRequest */
public String getMethod() {
@@ -1608,10 +1683,10 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns <jk>true</jk> if <code>&plainText=true</code> was specified as a URL parameter.
* <p>
- * This indicates that the <code>Content-Type</code> of the output should always be set to <js>"text/plain"</js>
+ * This indicates that the <code>Content-Type</code> of the output should always be set to <js>"text/plain"</js>
* to make it easy to render in a browser.
* <p>
- * This feature is useful for debugging.
+ * This feature is useful for debugging.
*
* @return <jk>true</jk> if {@code &plainText=true} was specified as a URL parameter
*/
@@ -1620,11 +1695,10 @@ public final class RestRequest extends HttpServletRequestWrapper {
}
/**
- * Shortcut method for calling {@link RestServlet#getMessage(Locale, String, Object...)} based
- * on the request locale.
+ * Shortcut method for calling {@link RestServlet#getMessage(Locale, String, Object...)} based on the request locale.
*
* @param key The message key.
- * @param args Optional {@link MessageFormat} variable values in the value.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @return The localized message.
*/
public String getMessage(String key, Object...args) {
@@ -1643,7 +1717,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the servlet handling the request.
* <p>
- * Can be used to access servlet-init parameters or annotations during requests,
+ * Can be used to access servlet-init parameters or annotations during requests,
* such as in calls to {@link RestGuard#guard(RestRequest, RestResponse)}..
*
* @return The servlet handling the request.
@@ -1655,11 +1729,13 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the java method handling the request.
* <p>
- * Can be used to access the method name or method annotations during requests, such
+ * Can be used to access the method name or method annotations during requests, such
* as in calls to {@link RestGuard#guard(RestRequest, RestResponse)}.
* <p>
- * Note: This returns null when evaluating servlet-level guards since the method
- * has not been resolved at that point of execution.
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This returns null when evaluating servlet-level guards since the method has not been resolved at that point of execution.
+ * </ul>
*
* @return The Java method handling the request, or <code>null</code> if the method
* has not yet been resolved.
@@ -1768,10 +1844,10 @@ public final class RestRequest extends HttpServletRequestWrapper {
/**
* Returns the localized Swagger from the file system.
* <p>
- * Looks for a file called <js>"{ServletClass}_{locale}.json"</js> in the same package
+ * Looks for a file called <js>"{ServletClass}_{locale}.json"</js> in the same package
* as this servlet and returns it as a parsed {@link Swagger} object.
* <p>
- * Returned objects are cached for later quick-lookup.
+ * Returned objects are cached for later quick-lookup.
*
* @return The parsed swagger object, or <jk>null</jk> if the swagger file could not be found.
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestResponse.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestResponse.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestResponse.java
index 5e65648..0318f59 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -37,7 +37,7 @@ import org.apache.juneau.xml.*;
* convenience methods, or revert to using lower level methods like any other servlet response.
* </p>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>)
* <jk>public void</jk> doGet(RestRequest req, RestResponse res) {
@@ -46,7 +46,7 @@ import org.apache.juneau.xml.*;
* }
* </p>
* <p>
- * Refer to <a class='doclink' href='package-summary.html#TOC'>REST Servlet API</a> for information about using this class.
+ * Refer to <a class="doclink" href="package-summary.html#TOC">REST Servlet API</a> for information about using this class.
* </p>
*/
public final class RestResponse extends HttpServletResponseWrapper {
@@ -153,7 +153,7 @@ public final class RestResponse extends HttpServletResponseWrapper {
* <ul>
* <li> {@link InputStream}
* <li> {@link Reader}
- * <li> Any serializable type defined in <a href='../../../../overview-summary.html#Core.PojoCategories'>POJO Categories</a>
+ * <li> Any serializable type defined in <a class="doclink" href="../../../../overview-summary.html#Core.PojoCategories">POJO Categories</a>
* </ul>
* <p>
* If it's an {@link InputStream} or {@link Reader}, you must also specify the <code>Content-Type</code> using the {@link #setContentType(String)} method.
@@ -199,7 +199,7 @@ public final class RestResponse extends HttpServletResponseWrapper {
/**
* Shortcut method that allows you to use varargs to simplify setting array output.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Instead of...</jc>
* response.setOutput(<jk>new</jk> Object[]{x,y,z});
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestServlet.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServlet.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServlet.java
index a6606c1..b7b9321 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServlet.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServlet.java
@@ -46,7 +46,6 @@ import org.apache.juneau.json.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.parser.ParseException;
import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.annotation.Parameter;
import org.apache.juneau.rest.annotation.Properties;
import org.apache.juneau.rest.response.*;
import org.apache.juneau.rest.vars.*;
@@ -59,7 +58,7 @@ import org.apache.juneau.utils.*;
/**
* Servlet implementation of a REST resource.
* <p>
- * Refer to <a class='doclink' href='package-summary.html#TOC'>REST Servlet API</a> for information about using this class.
+ * Refer to <a class="doclink" href="package-summary.html#TOC">REST Servlet API</a> for information about using this class.
* </p>
*/
@SuppressWarnings({"rawtypes","hiding"})
@@ -1229,7 +1228,7 @@ public abstract class RestServlet extends HttpServlet {
*
* @param level The log level.
* @param msg The message to log.
- * @param args {@link MessageFormat} style arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
protected void log(Level level, String msg, Object...args) {
log(level, null, msg, args);
@@ -1243,14 +1242,14 @@ public abstract class RestServlet extends HttpServlet {
* it's safe to use this method from within debug log statements.
* </p>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* logObjects(<jsf>DEBUG</jsf>, <js>"Pojo contents:\n{0}"</js>, myPojo);
* </p>
*
* @param level The log level.
* @param msg The message to log.
- * @param args {@link MessageFormat} style arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
protected void logObjects(Level level, String msg, Object...args) {
for (int i = 0; i < args.length; i++)
@@ -1268,7 +1267,7 @@ public abstract class RestServlet extends HttpServlet {
* @param level The log level.
* @param cause The cause.
* @param msg The message to log.
- * @param args {@link MessageFormat} style arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
protected void log(Level level, Throwable cause, String msg, Object...args) {
JuneauLogger log = getLogger();
@@ -1700,16 +1699,15 @@ public abstract class RestServlet extends HttpServlet {
* @param req The current request.
* @return The localized contact information of this REST resource, or <jk>null</jk> if no contact information was found.
*/
- @SuppressWarnings("unchecked")
public List<Tag> getTags(RestRequest req) {
VarResolverSession vr = req.getVarResolverSession();
JsonParser jp = JsonParser.DEFAULT;
try {
if (tags != null)
- return jp.parseCollection(vr.resolve(tags), ArrayList.class, Tag.class);
+ return jp.parse(vr.resolve(tags), ArrayList.class, Tag.class);
String tags = msgs.findFirstString(req.getLocale(), "tags");
if (tags != null)
- return jp.parseCollection(vr.resolve(tags), ArrayList.class, Tag.class);
+ return jp.parse(vr.resolve(tags), ArrayList.class, Tag.class);
Swagger s = req.getSwaggerFromFile();
if (s != null)
return s.getTags();
@@ -1786,7 +1784,7 @@ public abstract class RestServlet extends HttpServlet {
*
* @param locale The client locale.
* @param key The resource bundle key.
- * @param args Optional {@link java.text.MessageFormat} variable values to replace.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @return The localized message.
*/
public String getMessage(Locale locale, String key, Object...args) {
@@ -1979,7 +1977,7 @@ public abstract class RestServlet extends HttpServlet {
Map<String,String> m = new LinkedHashMap<String,String>();
for (RestResource r : restResourceAnnotationsParentFirst.values())
if (! r.staticFiles().isEmpty())
- m.putAll(JsonParser.DEFAULT.parseMap(getVarResolver().resolve(r.staticFiles()), LinkedHashMap.class, String.class, String.class));
+ m.putAll(JsonParser.DEFAULT.parse(getVarResolver().resolve(r.staticFiles()), LinkedHashMap.class));
return m;
}
@@ -2122,7 +2120,6 @@ public abstract class RestServlet extends HttpServlet {
throw new ServletException("Use of multipart flag on parameter that's not an array or Collection on method" + m);
}
- @SuppressWarnings("unchecked")
private Object getValue(RestRequest req, RestResponse res) throws Exception {
BeanSession session = req.getBeanSession();
switch(paramType) {
@@ -2390,16 +2387,15 @@ public abstract class RestServlet extends HttpServlet {
return null;
}
- @SuppressWarnings("unchecked")
private List<String> getTags(RestRequest req) {
VarResolverSession vr = req.getVarResolverSession();
JsonParser jp = JsonParser.DEFAULT;
try {
if (tags != null)
- return jp.parseCollection(vr.resolve(tags), ArrayList.class, String.class);
+ return jp.parse(vr.resolve(tags), ArrayList.class, String.class);
String tags = msgs.findFirstString(req.getLocale(), method.getName() + ".tags");
if (tags != null)
- return jp.parseCollection(vr.resolve(tags), ArrayList.class, String.class);
+ return jp.parse(vr.resolve(tags), ArrayList.class, String.class);
Operation o = getSwaggerOperationFromFile(req);
if (o != null)
return o.getTags();
@@ -2569,7 +2565,7 @@ public abstract class RestServlet extends HttpServlet {
ResponseInfo r2 = ResponseInfo.create(description);
if (r.headers().length > 0) {
- for (Parameter v : r.headers()) {
+ for (org.apache.juneau.rest.annotation.Parameter v : r.headers()) {
HeaderInfo h = HeaderInfo.createStrict(vr.resolve(v.type()));
if (! v.collectionFormat().isEmpty())
h.setCollectionFormat(vr.resolve(v.collectionFormat()));
@@ -2632,7 +2628,7 @@ public abstract class RestServlet extends HttpServlet {
} else if ("schema".equals(name)) {
r2.setSchema(jp.parse(value, SchemaInfo.class));
} else if ("examples".equals(name)) {
- r2.setExamples(jp.parseMap(value, TreeMap.class, String.class, Object.class));
+ r2.setExamples(jp.parse(value, TreeMap.class));
} else {
System.err.println("Unknown bundle key '"+key+"'");
}
@@ -2930,7 +2926,7 @@ public abstract class RestServlet extends HttpServlet {
* <p>
* Subclasses can augment this list by adding their own variables.
* </p>
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@Override</ja>
* <jk>protected</jk> StringVarResolver createVarResolver() {
@@ -3032,14 +3028,17 @@ public abstract class RestServlet extends HttpServlet {
/**
* Returns the class-level properties associated with this servlet.
* <p>
- * Created by the {@link #createGuards(ObjectMap)} method.
+ * Created by the {@link #createGuards(ObjectMap)} method.
* <p>
- * <b>Important note:</b> The returned {@code Map} is mutable. Therefore, subclasses are free to override
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>The returned {@code Map} is mutable. Therefore, subclasses are free to override
* or set additional initialization parameters in their {@code init()} method.
+ * </ul>
* <p>
- * This method can be called from {@link HttpServlet#init(ServletConfig)} or {@link HttpServlet#init()}.
+ * This method can be called from {@link HttpServlet#init(ServletConfig)} or {@link HttpServlet#init()}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Old way of getting a boolean init parameter</jc>
* String s = getInitParam(<js>"allowMethodParam"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletContext.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletContext.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletContext.java
index 5124931..83eac97 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletContext.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletContext.java
@@ -118,7 +118,7 @@ public final class RestServletContext extends Context {
* Use "*" to represent all methods.
* For backwards compatibility, "true" also means "*".
* <p>
- * Note that per the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specification</a>, special care should
+ * Note that per the <a class="doclink" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specification</a>, special care should
* be taken when allowing non-safe (POST, PUT, DELETE) methods to be invoked through GET requests.
* <p>
* Applicable to servlet class only.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletException.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletException.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletException.java
index dabf8e5..61295fc 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletException.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestServletException.java
@@ -27,7 +27,7 @@ public class RestServletException extends ServletException {
* Constructor.
*
* @param message The detailed message.
- * @param args Optional message arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public RestServletException(String message, Object...args) {
super(args.length == 0 ? message : MessageFormat.format(message, args));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Body.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Body.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Body.java
index 7455460..f302e34 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Body.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Body.java
@@ -22,7 +22,7 @@ import java.lang.annotation.*;
* Annotation that can be applied to a parameter of a {@link RestMethod} annotated method
* to identify it as the HTTP request body converted to a POJO.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"POST"</js>)
* <jk>public void</jk> doPostPerson(RestRequest req, RestResponse res, <ja>@Body</ja> Person person) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
index 293f3b8..1086956 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/FormData.java
@@ -23,7 +23,7 @@ import org.apache.juneau.rest.*;
* Annotation that can be applied to a parameter of a {@link RestMethod} annotated method
* to identify it as a form post entry converted to a POJO.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"POST"</js>)
* <jk>public void</jk> doPost(RestRequest req, RestResponse res,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
index 527a6c9..3a8e207 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasFormData.java
@@ -25,7 +25,7 @@ import org.apache.juneau.rest.*;
* <p>
* Note that this can be used to detect the existence of a parameter when it's not set to a particular value.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"POST"</js>)
* <jk>public void</jk> doPost(<ja>@HasFormData</ja>(<js>"p1"</js>) <jk>boolean</jk> p1) {
[7/7] incubator-juneau git commit: Eliminate ClassMeta dependencies
from Parser. Clean up docs.
Posted by ja...@apache.org.
Eliminate ClassMeta dependencies from Parser. Clean up docs.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/30dd3b93
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/30dd3b93
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/30dd3b93
Branch: refs/heads/master
Commit: 30dd3b93677907ccbbac7594985f0f8a6f2cba64
Parents: 642f5dd
Author: JamesBognar <ja...@apache.org>
Authored: Tue Feb 7 20:15:48 2017 -0500
Committer: JamesBognar <ja...@apache.org>
Committed: Tue Feb 7 20:15:48 2017 -0500
----------------------------------------------------------------------
.../apache/juneau/jena/RdfCommonContext.java | 34 +-
.../java/org/apache/juneau/jena/RdfParser.java | 10 +-
.../apache/juneau/jena/RdfParserContext.java | 6 +-
.../org/apache/juneau/jena/RdfSerializer.java | 8 +-
.../juneau/jena/RdfSerializerContext.java | 6 +-
.../juneau/jena/annotation/RdfSchema.java | 2 +-
.../juneau/a/rttests/RoundTripBeanMapsTest.java | 67 +-
.../juneau/a/rttests/RoundTripMapsTest.java | 22 +-
.../a/rttests/RoundTripPrimitivesBeansTest.java | 4 +-
.../a/rttests/RoundTripSimpleObjectsTest.java | 2 +-
.../apache/juneau/a/rttests/RoundTripTest.java | 28 +-
.../a/rttests/RoundTripToObjectMapsTest.java | 6 +-
.../juneau/dto/html5/BasicHtmlSchemaTest.java | 4 +-
.../juneau/dto/html5/HtmlTemplatesTest.java | 4 +-
.../java/org/apache/juneau/jena/CommonTest.java | 3 +-
.../java/org/apache/juneau/jena/RdfTest.java | 3 +-
.../java/org/apache/juneau/json/JsonTest.java | 6 +-
.../transforms/ByteArrayBase64SwapTest.java | 9 +-
.../CommonParser_UrlEncodingTest.java | 3 +-
.../juneau/urlencoding/UonParserTest.java | 62 +-
.../urlencoding/UrlEncodingParserTest.java | 42 +-
.../java/org/apache/juneau/BeanContext.java | 215 ++--
.../main/java/org/apache/juneau/BeanMap.java | 8 +-
.../java/org/apache/juneau/BeanMapEntry.java | 2 +-
.../main/java/org/apache/juneau/BeanMeta.java | 2 +-
.../org/apache/juneau/BeanPropertyMeta.java | 6 +-
.../java/org/apache/juneau/BeanRegistry.java | 20 +-
.../java/org/apache/juneau/BeanSession.java | 120 +-
.../main/java/org/apache/juneau/ClassMeta.java | 2 +-
.../main/java/org/apache/juneau/CoreApi.java | 2 +-
.../org/apache/juneau/FormattedException.java | 4 +-
.../juneau/FormattedRuntimeException.java | 4 +-
.../main/java/org/apache/juneau/MediaRange.java | 2 +-
.../main/java/org/apache/juneau/MediaType.java | 16 +-
.../main/java/org/apache/juneau/ObjectList.java | 4 +-
.../main/java/org/apache/juneau/ObjectMap.java | 2 +-
.../apache/juneau/PropertyNamerDashedLC.java | 2 +-
.../org/apache/juneau/PropertyNamerDefault.java | 2 +-
.../main/java/org/apache/juneau/Session.java | 2 +-
.../main/java/org/apache/juneau/Visibility.java | 2 +-
.../java/org/apache/juneau/annotation/Bean.java | 8 +-
.../apache/juneau/annotation/BeanProperty.java | 8 +-
.../org/apache/juneau/annotation/Consumes.java | 4 +-
.../java/org/apache/juneau/annotation/Pojo.java | 2 +-
.../org/apache/juneau/annotation/Produces.java | 4 +-
.../java/org/apache/juneau/annotation/URI.java | 2 +-
.../org/apache/juneau/dto/cognos/DataSet.java | 2 +-
.../apache/juneau/dto/jsonschema/JsonType.java | 2 +-
.../org/apache/juneau/dto/swagger/Contact.java | 2 +-
.../dto/swagger/ExternalDocumentation.java | 2 +-
.../apache/juneau/dto/swagger/HeaderInfo.java | 2 +-
.../org/apache/juneau/dto/swagger/Info.java | 2 +-
.../org/apache/juneau/dto/swagger/Items.java | 2 +-
.../org/apache/juneau/dto/swagger/License.java | 2 +-
.../apache/juneau/dto/swagger/Operation.java | 2 +-
.../apache/juneau/dto/swagger/ResponseInfo.java | 2 +-
.../juneau/dto/swagger/SecurityScheme.java | 2 +-
.../java/org/apache/juneau/dto/swagger/Tag.java | 2 +-
.../org/apache/juneau/encoders/Encoder.java | 2 +-
.../apache/juneau/encoders/EncoderGroup.java | 4 +-
.../apache/juneau/html/HtmlDocSerializer.java | 6 +-
.../juneau/html/HtmlDocSerializerContext.java | 16 +-
.../java/org/apache/juneau/html/HtmlParser.java | 11 +-
.../apache/juneau/html/HtmlParserContext.java | 6 +-
.../juneau/html/HtmlSchemaDocSerializer.java | 4 +-
.../org/apache/juneau/html/HtmlSerializer.java | 8 +-
.../juneau/html/HtmlSerializerContext.java | 6 +-
.../juneau/html/HtmlStrippedDocSerializer.java | 4 +-
.../apache/juneau/html/SimpleHtmlWriter.java | 2 +-
.../java/org/apache/juneau/ini/ConfigFile.java | 2 +-
.../java/org/apache/juneau/ini/ConfigMgr.java | 2 +-
.../org/apache/juneau/internal/ClassUtils.java | 2 +-
.../apache/juneau/internal/IdentityList.java | 6 +-
.../apache/juneau/internal/JuneauLogger.java | 100 +-
.../org/apache/juneau/internal/StringUtils.java | 6 +-
.../apache/juneau/internal/ThrowableUtils.java | 6 +-
.../juneau/jso/JavaSerializedObjectParser.java | 2 +-
.../jso/JavaSerializedObjectSerializer.java | 2 +-
.../java/org/apache/juneau/json/JsonParser.java | 13 +-
.../apache/juneau/json/JsonParserContext.java | 10 +-
.../juneau/json/JsonSchemaSerializer.java | 4 +-
.../org/apache/juneau/json/JsonSerializer.java | 8 +-
.../juneau/json/JsonSerializerContext.java | 6 +-
.../java/org/apache/juneau/json/JsonWriter.java | 5 +-
.../org/apache/juneau/json/annotation/Json.java | 2 +-
.../juneau/msgpack/MsgPackInputStream.java | 5 +-
.../juneau/msgpack/MsgPackOutputStream.java | 5 +-
.../apache/juneau/msgpack/MsgPackParser.java | 5 +-
.../juneau/msgpack/MsgPackParserContext.java | 6 +-
.../juneau/msgpack/MsgPackSerializer.java | 4 +-
.../msgpack/MsgPackSerializerContext.java | 6 +-
.../apache/juneau/parser/InputStreamParser.java | 2 +-
.../apache/juneau/parser/ParseException.java | 4 +-
.../java/org/apache/juneau/parser/Parser.java | 174 ++-
.../org/apache/juneau/parser/ParserGroup.java | 4 +-
.../org/apache/juneau/parser/ReaderParser.java | 2 +-
.../juneau/plaintext/PlainTextParser.java | 8 +-
.../juneau/plaintext/PlainTextSerializer.java | 6 +-
.../serializer/OutputStreamSerializer.java | 2 +-
.../juneau/serializer/SerializeException.java | 4 +-
.../apache/juneau/serializer/Serializer.java | 4 +-
.../juneau/serializer/SerializerContext.java | 9 +-
.../juneau/serializer/SerializerGroup.java | 4 +-
.../juneau/serializer/SerializerWriter.java | 2 +-
.../apache/juneau/serializer/StringObject.java | 2 +-
.../juneau/serializer/WriterSerializer.java | 2 +-
.../apache/juneau/soap/SoapXmlSerializer.java | 6 +-
.../juneau/soap/SoapXmlSerializerContext.java | 6 +-
.../java/org/apache/juneau/svl/VarResolver.java | 4 +-
.../org/apache/juneau/svl/vars/ArgsVar.java | 2 +-
.../apache/juneau/svl/vars/ConfigFileVar.java | 2 +-
.../apache/juneau/svl/vars/EnvVariablesVar.java | 2 +-
.../apache/juneau/svl/vars/ManifestFileVar.java | 2 +-
.../juneau/svl/vars/SystemPropertiesVar.java | 2 +-
.../juneau/transform/BeanFilterBuilder.java | 4 +-
.../org/apache/juneau/transform/PojoSwap.java | 4 +-
.../juneau/transforms/BeanStringSwap.java | 2 +-
.../apache/juneau/transforms/CalendarSwap.java | 46 +-
.../org/apache/juneau/transforms/DateSwap.java | 46 +-
.../apache/juneau/transforms/ReaderSwap.java | 4 +-
.../apache/juneau/urlencoding/UonParser.java | 11 +-
.../juneau/urlencoding/UonParserContext.java | 6 +-
.../juneau/urlencoding/UonSerializer.java | 8 +-
.../urlencoding/UonSerializerContext.java | 6 +-
.../apache/juneau/urlencoding/UonWriter.java | 5 +-
.../juneau/urlencoding/UrlEncodingContext.java | 11 +-
.../juneau/urlencoding/UrlEncodingParser.java | 45 +-
.../urlencoding/UrlEncodingParserContext.java | 13 +-
.../urlencoding/UrlEncodingSerializer.java | 8 +-
.../UrlEncodingSerializerContext.java | 13 +-
.../main/java/org/apache/juneau/utils/Args.java | 6 +-
.../org/apache/juneau/utils/MessageBundle.java | 6 +-
.../apache/juneau/utils/PojoIntrospector.java | 2 +-
.../java/org/apache/juneau/utils/PojoQuery.java | 8 +-
.../java/org/apache/juneau/utils/PojoRest.java | 27 +-
.../apache/juneau/utils/PojoRestException.java | 2 +-
.../org/apache/juneau/utils/ProcBuilder.java | 2 +-
.../org/apache/juneau/xml/XmlDocSerializer.java | 4 +-
.../java/org/apache/juneau/xml/XmlParser.java | 7 +-
.../org/apache/juneau/xml/XmlParserContext.java | 11 +-
.../juneau/xml/XmlSchemaDocSerializer.java | 4 +-
.../apache/juneau/xml/XmlSchemaSerializer.java | 6 +-
.../org/apache/juneau/xml/XmlSerializer.java | 6 +-
.../apache/juneau/xml/XmlSerializerContext.java | 16 +-
.../java/org/apache/juneau/xml/XmlWriter.java | 5 +-
.../org/apache/juneau/xml/annotation/Xml.java | 4 +-
.../apache/juneau/xml/annotation/XmlSchema.java | 2 +-
juneau-core/src/main/javadoc/javadoc.css | 5 +
juneau-core/src/main/javadoc/overview.html | 77 +-
.../juneau-examples-rest.launch | 30 +
.../examples/rest/MethodExampleResource.java | 2 +-
.../juneau/microservice/Microservice.java | 6 +-
.../juneau/microservice/RestMicroservice.java | 2 +-
.../juneau/rest/client/AllowAllRedirects.java | 7 +-
.../juneau/rest/client/NameValuePairs.java | 2 +-
.../juneau/rest/client/ResponsePattern.java | 2 +-
.../org/apache/juneau/rest/client/RestCall.java | 98 +-
.../apache/juneau/rest/client/RestClient.java | 4 +-
.../rest/client/SerializedNameValuePair.java | 2 +-
.../apache/juneau/rest/jaxrs/BaseProvider.java | 6 +-
.../juneau/rest/jaxrs/JuneauProvider.java | 2 +-
.../java/org/apache/juneau/rest/Redirect.java | 4 +-
.../org/apache/juneau/rest/RestConverter.java | 2 +-
.../org/apache/juneau/rest/RestException.java | 2 +-
.../java/org/apache/juneau/rest/RestGuard.java | 2 +-
.../org/apache/juneau/rest/RestMatcher.java | 2 +-
.../org/apache/juneau/rest/RestRequest.java | 1038 ++++++++++--------
.../org/apache/juneau/rest/RestResponse.java | 8 +-
.../org/apache/juneau/rest/RestServlet.java | 43 +-
.../apache/juneau/rest/RestServletContext.java | 2 +-
.../juneau/rest/RestServletException.java | 2 +-
.../org/apache/juneau/rest/annotation/Body.java | 2 +-
.../apache/juneau/rest/annotation/FormData.java | 2 +-
.../juneau/rest/annotation/HasFormData.java | 2 +-
.../apache/juneau/rest/annotation/HasQuery.java | 2 +-
.../apache/juneau/rest/annotation/Header.java | 2 +-
.../apache/juneau/rest/annotation/Messages.java | 2 +-
.../apache/juneau/rest/annotation/Method.java | 2 +-
.../juneau/rest/annotation/Parameter.java | 21 +-
.../org/apache/juneau/rest/annotation/Path.java | 2 +-
.../juneau/rest/annotation/PathRemainder.java | 2 +-
.../juneau/rest/annotation/Properties.java | 2 +-
.../apache/juneau/rest/annotation/Query.java | 2 +-
.../apache/juneau/rest/annotation/Response.java | 6 +-
.../juneau/rest/annotation/RestMethod.java | 12 +-
.../juneau/rest/annotation/RestResource.java | 20 +-
.../juneau/rest/converters/Queryable.java | 15 +-
.../juneau/rest/labels/ResourceDescription.java | 2 +-
.../apache/juneau/rest/labels/ResourceLink.java | 4 +-
189 files changed, 1568 insertions(+), 1565 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfCommonContext.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfCommonContext.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfCommonContext.java
index 61414c1..548dce5 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfCommonContext.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfCommonContext.java
@@ -309,7 +309,7 @@ public interface RdfCommonContext {
* <ul class='spaced-list'>
* <li><js>"lax"</js> - The rules for RDF URI references only, which does permit spaces although the use of spaces is not good practice.
* <li><js>"strict"</js> - Sets the IRI engine with rules for valid IRIs, XLink and RDF; it does not permit spaces in IRIs.
- * <li><js>"iri"</js> - Sets the IRI engine to IRI (<a href='http://www.ietf.org/rfc/rfc3986.txt'>RFC 3986</a>, <a href='http://www.ietf.org/rfc/rfc3987.txt'>RFC 3987</a>).
+ * <li><js>"iri"</js> - Sets the IRI engine to IRI (<a class="doclink" href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>, <a class="doclink" href="http://www.ietf.org/rfc/rfc3987.txt">RFC 3987</a>).
* </ul>
*/
public static final String RDF_arp_iriRules = "Rdf.jena.rdfXml.iri-rules";
@@ -338,10 +338,10 @@ public interface RdfCommonContext {
* <p>
* See also:
* <ul class='spaced-list'>
- * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setDefaultErrorMode()'>ARPOptions.setDefaultErrorMode()</a>
- * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setLaxErrorMode()'>ARPOptions.setLaxErrorMode()</a>
- * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setStrictErrorMode()'>ARPOptions.setStrictErrorMode()</a>
- * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setStrictErrorMode(int)'>ARPOptions.setStrictErrorMode(int)</a>
+ * <li><a class="doclink" href="http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setDefaultErrorMode()">ARPOptions.setDefaultErrorMode()</a>
+ * <li><a class="doclink" href="http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setLaxErrorMode()">ARPOptions.setLaxErrorMode()</a>
+ * <li><a class="doclink" href="http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setStrictErrorMode()">ARPOptions.setStrictErrorMode()</a>
+ * <li><a class="doclink" href="http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setStrictErrorMode(int)">ARPOptions.setStrictErrorMode(int)</a>
* </ul>
*/
public static final String RDF_arp_errorMode = "Rdf.jena.rdfXml.error-mode";
@@ -359,7 +359,7 @@ public interface RdfCommonContext {
* <p>
* See also:
* <ul class='spaced-list'>
- * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setEmbedding(boolean)'>ARPOptions.setEmbedding(boolean)</a>
+ * <li><a class="doclink" href="http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setEmbedding(boolean)">ARPOptions.setEmbedding(boolean)</a>
* </ul>
*/
public static final String RDF_arp_embedding = "Rdf.jena.rdfXml.embedding";
@@ -384,8 +384,8 @@ public interface RdfCommonContext {
* <p>
* See also:
* <ul class='spaced-list'>
- * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPErrorNumbers.html'>ARPErrorNumbers</a>
- * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setErrorMode(int,%20int)'>ARPOptions.setErrorMode(int, int)</a>
+ * <li><a class="doclink" href="http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPErrorNumbers.html">ARPErrorNumbers</a>
+ * <li><a class="doclink" href="http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setErrorMode(int,%20int)">ARPOptions.setErrorMode(int, int)</a>
* </ul>
*/
public static final String RDF_arp_err_ = "Rdf.jena.rdfXml.ERR_";
@@ -549,7 +549,7 @@ public interface RdfCommonContext {
* <li><b>Default:</b> <js>""</js>
* </ul>
* <p>
- * A list of <code>Resource</code> or a <code>String</code> being a comma separated list of fragment IDs from <a href='http://www.w3.org/TR/rdf-syntax-grammar'>RDF Syntax Grammar</a> indicating grammar rules that will not be used.
+ * A list of <code>Resource</code> or a <code>String</code> being a comma separated list of fragment IDs from <a class="doclink" href="http://www.w3.org/TR/rdf-syntax-grammar">RDF Syntax Grammar</a> indicating grammar rules that will not be used.
*/
public static final String RDF_rdfxml_blockRules = "Rdf.jena.rdfXml.blockRules";
@@ -701,9 +701,11 @@ public interface RdfCommonContext {
* <li><js>"LIST"</js> - RDF List container.
* <li><js>"MULTI_VALUED"</js> - Multi-valued properties.
* </ul>
- * <p>
- * Important Note: If you use <js>"BAG"</js> or <js>"MULTI_VALUED"</js>, the order of the elements
- * in the collection will get lost.
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>If you use <js>"BAG"</js> or <js>"MULTI_VALUED"</js>, the order of the elements in the collection will get lost.
+ * </ul>
*/
public static final String RDF_collectionFormat = "Rdf.collectionFormat";
@@ -726,7 +728,7 @@ public interface RdfCommonContext {
* This setting is typically only useful if the beans being parsed into do not have a bean property
* annotated with {@link Rdf#beanUri @Rdf(beanUri=true)}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* WriterSerializer s = <jk>new</jk> RdfSerializer.XmlAbbrev().setProperty(<jsf>RDF_looseCollection</jsf>, <jk>true</jk>);
* ReaderParser p = <jk>new</jk> RdfParser.Xml().setProperty(<jsf>RDF_looseCollection</jsf>, <jk>true</jk>);
@@ -736,15 +738,15 @@ public interface RdfCommonContext {
* <jc>// Serialize to RDF/XML as loose resources</jc>
* String rdfXml = s.serialize(l);
*
- * <jc>// Parse back into a Java collection</jc>
- * l = p.parseCollection(rdfXml, LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>);
+ * <jc>// Parse back into a Java collection</jc>
+ * l = p.parse(rdfXml, LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>);
*
* MyBean[] b = createArrayOfMyBeans();
*
* <jc>// Serialize to RDF/XML as loose resources</jc>
* String rdfXml = s.serialize(b);
*
- * <jc>// Parse back into a bean array</jc>
+ * <jc>// Parse back into a bean array</jc>
* b = p.parse(rdfXml, MyBean[].<jk>class</jk>);
* </p>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
index eec0ffc..9ac292f 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -30,9 +30,9 @@ import com.hp.hpl.jena.util.iterator.*;
/**
* Parses RDF into POJOs.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
- * Refer to <a class='doclink' href='package-summary.html#ParserConfigurableProperties'>Configurable Properties</a>
+ * Refer to <a class="doclink" href="package-summary.html#ParserConfigurableProperties">Configurable Properties</a>
* for the entire list of configurable properties.
*
* <h6 class='topic'>Behavior-specific subclasses</h6>
@@ -45,9 +45,9 @@ import com.hp.hpl.jena.util.iterator.*;
* <li>{@link RdfParser.N3} - N3.
* </ul>
*
- * <h6 class='topic'>Additional Information</h6>
+ * <h5 class='section'>Additional information:</h5>
* <p>
- * See <a class='doclink' href='package-summary.html#TOC'>RDF Overview</a> for an overview of RDF support in Juneau.
+ * See <a class="doclink" href="package-summary.html#TOC">RDF Overview</a> for an overview of RDF support in Juneau.
*/
@Consumes(value="text/xml+rdf")
public class RdfParser extends ReaderParser {
@@ -108,8 +108,6 @@ public class RdfParser extends ReaderParser {
RdfParserSession s = (RdfParserSession)session;
- type = session.normalizeClassMeta(type);
-
Model model = s.getModel();
RDFReader r = s.getRdfReader();
r.read(model, session.getReader(), null);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserContext.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserContext.java
index eb0c1f9..224dc13 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserContext.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserContext.java
@@ -51,11 +51,11 @@ import org.apache.juneau.xml.*;
*
* <h6 class='topic' id='ConfigProperties'>Configurable properties inherited by the RDF parsers</h6>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../parser/ParserContext.html#ConfigProperties'>ParserContext</a> - Configurable properties common to all parsers.
+ * <li class='c'><a class="doclink" href="../parser/ParserContext.html#ConfigProperties">ParserContext</a> - Configurable properties common to all parsers.
* <ul>
- * <li class='i'><a class='doclink' href='RdfCommonContext.html#ConfigProperties'>RdfCommonContext</a> - Configurable properties common to the RDF serializers and parsers.
+ * <li class='i'><a class="doclink" href="RdfCommonContext.html#ConfigProperties">RdfCommonContext</a> - Configurable properties common to the RDF serializers and parsers.
* </ul>
* </ul>
* </ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 461decb..f296666 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -30,9 +30,9 @@ import com.hp.hpl.jena.rdf.model.*;
/**
* Serializes POJOs to RDF.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
- * Refer to <a class='doclink' href='package-summary.html#SerializerConfigurableProperties'>Configurable Properties</a>
+ * Refer to <a class="doclink" href="package-summary.html#SerializerConfigurableProperties">Configurable Properties</a>
* for the entire list of configurable properties.
*
* <h6 class='topic'>Behavior-specific subclasses</h6>
@@ -46,9 +46,9 @@ import com.hp.hpl.jena.rdf.model.*;
* <li>{@link RdfSerializer.N3} - N3.
* </ul>
*
- * <h6 class='topic'>Additional Information</h6>
+ * <h5 class='section'>Additional information:</h5>
* <p>
- * See <a class='doclink' href='package-summary.html#TOC'>RDF Overview</a> for an overview of RDF support in Juneau.
+ * See <a class="doclink" href="package-summary.html#TOC">RDF Overview</a> for an overview of RDF support in Juneau.
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
@Produces(value="text/xml+rdf+abbrev", contentType="text/xml+rdf")
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerContext.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerContext.java
index fec2789..2e3e5f0 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerContext.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerContext.java
@@ -72,11 +72,11 @@ import org.apache.juneau.xml.*;
*
* <h6 class='topic' id='ConfigProperties'>Configurable properties inherited by the RDF serializers</h6>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* <ul>
- * <li class='c'><a class='doclink' href='RdfCommonContext.html#ConfigProperties'>RdfCommonContext</a> - Configurable properties common to the RDF serializers and parsers.
+ * <li class='c'><a class="doclink" href="RdfCommonContext.html#ConfigProperties">RdfCommonContext</a> - Configurable properties common to the RDF serializers and parsers.
* </ul>
* </ul>
* </ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfSchema.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfSchema.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfSchema.java
index 5471bcf..3520f0e 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfSchema.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfSchema.java
@@ -52,7 +52,7 @@ public @interface RdfSchema {
* <p>
* Inherited by child packages.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* Contents of <code>package-info.java</code>...
* </p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
index c610ee5..7d30f9a 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
@@ -19,7 +19,6 @@ import java.util.*;
import javax.xml.datatype.*;
-import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.json.*;
import org.apache.juneau.json.annotation.*;
@@ -97,21 +96,21 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
}};
l.get(0).setF1("bar");
- l = roundTripCollection(l, List.class, IBean.class);
+ l = roundTrip(l, List.class, IBean.class);
assertEquals("bar", l.get(0).getF1());
- l = roundTripCollection(l, LinkedList.class, IBean.class);
+ l = roundTrip(l, LinkedList.class, IBean.class);
assertEquals("bar", l.get(0).getF1());
l.get(0).setF1("baz");
- l = roundTripCollection(l, List.class, ABean.class);
+ l = roundTrip(l, List.class, ABean.class);
assertEquals("baz", l.get(0).getF1());
- l = roundTripCollection(l, LinkedList.class, ABean.class);
+ l = roundTrip(l, LinkedList.class, ABean.class);
assertEquals("baz", l.get(0).getF1());
l.get(0).setF1("bing");
- l = roundTripCollection(l, List.class, CBean.class);
+ l = roundTrip(l, List.class, CBean.class);
assertEquals("bing", l.get(0).getF1());
- l = roundTripCollection(l, LinkedList.class, CBean.class);
+ l = roundTrip(l, LinkedList.class, CBean.class);
assertEquals("bing", l.get(0).getF1());
}
@@ -125,21 +124,21 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
}};
l.get("foo").setF1("bar");
- l = roundTripMap(l, Map.class, String.class, IBean.class);
+ l = roundTrip(l, Map.class, String.class, IBean.class);
assertEquals("bar", l.get("foo").getF1());
- l = roundTripMap(l, LinkedHashMap.class, String.class, IBean.class);
+ l = roundTrip(l, LinkedHashMap.class, String.class, IBean.class);
assertEquals("bar", l.get("foo").getF1());
l.get("foo").setF1("baz");
- l = roundTripMap(l, Map.class, String.class, ABean.class);
+ l = roundTrip(l, Map.class, String.class, ABean.class);
assertEquals("baz", l.get("foo").getF1());
- l = roundTripMap(l, LinkedHashMap.class, String.class, ABean.class);
+ l = roundTrip(l, LinkedHashMap.class, String.class, ABean.class);
assertEquals("baz", l.get("foo").getF1());
l.get("foo").setF1("bing");
- l = roundTripMap(l, Map.class, String.class, CBean.class);
+ l = roundTrip(l, Map.class, String.class, CBean.class);
assertEquals("bing", l.get("foo").getF1());
- l = roundTripMap(l, LinkedHashMap.class, String.class, CBean.class);
+ l = roundTrip(l, LinkedHashMap.class, String.class, CBean.class);
assertEquals("bing", l.get("foo").getF1());
}
@@ -925,7 +924,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
Map<String,L> m = new LinkedHashMap<String,L>();
m.put("bar", L.create());
- roundTripMap(m, LinkedHashMap.class, String.class, L.class);
+ roundTrip(m, LinkedHashMap.class, String.class, L.class);
}
@Json(wrapperAttr="foo")
@@ -949,7 +948,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
Map<String,M> m = new LinkedHashMap<String,M>();
m.put("bar", M.create());
- roundTripMap(m, LinkedHashMap.class, String.class, M.class);
+ roundTrip(m, LinkedHashMap.class, String.class, M.class);
}
@Json(wrapperAttr="foo")
@@ -973,42 +972,4 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
return m;
}
}
-
- //====================================================================================================
- // Test parsing into top-level non-static inner classes with outer context.
- //====================================================================================================
- @Test
- public void testParsingIntoTopLevelNonStaticInnerClasses() throws Exception {
- N n = new N(1);
-
- if (returnOriginalObject)
- return;
-
- Serializer s = getSerializer();
- Parser p = getParser();
-
- Object r = s.serialize(n.n2);
- n = new N(2);
- ParserSession session = p.createSession(r, null, null, n, null, null, null);
-
- N.N2 n2 = p.parse(session, BeanContext.DEFAULT.getClassMeta(N.N2.class));
-
- // The inner N2.f1 field should be the value of the outer object passed in through the context.
- assertEquals(2, n2.f1);
- }
-
- public static class N {
- public int f1;
- public N2 n2;
-
- public N(int f1) {
- this.f1 = f1;
- n2 = new N2();
- }
- public class N2 {
- private int f1 = N.this.f1;
- public int dummy = 1;
- }
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
index abd4c72..41a3475 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
@@ -31,7 +31,7 @@ import org.junit.*;
* Tests designed to serialize and parse objects to make sure we end up
* with the same objects for all serializers and parsers.
*/
-@SuppressWarnings({"unchecked","deprecation","javadoc"})
+@SuppressWarnings({"deprecation","javadoc"})
public class RoundTripMapsTest extends RoundTripTest {
public RoundTripMapsTest(String label, Serializer s, Parser p, int flags) throws Exception {
@@ -55,7 +55,7 @@ public class RoundTripMapsTest extends RoundTripTest {
Map<Integer,String> t = new TreeMap<Integer,String>();
t.put(1, "a");
t.put(2, null);
- t = roundTripMap(t, TreeMap.class, Integer.class, String.class);
+ t = roundTrip(t, TreeMap.class, Integer.class, String.class);
assertEquals("a", t.get(1));
assertNull(null, t.get(2));
@@ -63,7 +63,7 @@ public class RoundTripMapsTest extends RoundTripTest {
t.put(1, "a");
t.put(2, null);
t.put(null, "b");
- t = roundTripMap(t, HashMap.class, Integer.class, String.class);
+ t = roundTrip(t, HashMap.class, Integer.class, String.class);
assertEquals("a", t.get(1));
assertNull(t.get(2));
assertEquals("b", t.get(null));
@@ -77,7 +77,7 @@ public class RoundTripMapsTest extends RoundTripTest {
Map<Boolean,String> t = new TreeMap<Boolean,String>();
t.put(true, "a");
t.put(false, null);
- t = roundTripMap(t, TreeMap.class, Boolean.class, String.class);
+ t = roundTrip(t, TreeMap.class, Boolean.class, String.class);
assertEquals("a", t.get(true));
assertNull(null, t.get(false));
@@ -85,7 +85,7 @@ public class RoundTripMapsTest extends RoundTripTest {
t.put(true, "a");
t.put(false, null);
t.put(null, "b");
- t = roundTripMap(t, HashMap.class, Boolean.class, String.class);
+ t = roundTrip(t, HashMap.class, Boolean.class, String.class);
assertEquals("a", t.get(true));
assertNull(t.get(false));
assertEquals("b", t.get(null));
@@ -144,7 +144,7 @@ public class RoundTripMapsTest extends RoundTripTest {
Map<Date,String> t = new TreeMap<Date,String>();
t.put(td1, "a");
t.put(td2, null);
- t = roundTripMap(t, TreeMap.class, Date.class, String.class);
+ t = roundTrip(t, TreeMap.class, Date.class, String.class);
assertEquals("a", t.get(td1));
assertNull(null, t.get(td2));
@@ -152,7 +152,7 @@ public class RoundTripMapsTest extends RoundTripTest {
t.put(td1, "a");
t.put(td2, null);
t.put(null, "b");
- t = roundTripMap(t, HashMap.class, Date.class, String.class);
+ t = roundTrip(t, HashMap.class, Date.class, String.class);
assertEquals("a", t.get(td1));
assertNull(t.get(td2));
assertEquals("b", t.get(null));
@@ -171,7 +171,7 @@ public class RoundTripMapsTest extends RoundTripTest {
Map<Calendar,String> t = new TreeMap<Calendar,String>();
t.put(td1, "a");
t.put(td2, null);
- t = roundTripMap(t, TreeMap.class, GregorianCalendar.class, String.class);
+ t = roundTrip(t, TreeMap.class, GregorianCalendar.class, String.class);
assertEquals("a", t.get(td1));
assertNull(null, t.get(td2));
@@ -179,7 +179,7 @@ public class RoundTripMapsTest extends RoundTripTest {
t.put(td1, "a");
t.put(td2, null);
t.put(null, "b");
- t = roundTripMap(t, HashMap.class, GregorianCalendar.class, String.class);
+ t = roundTrip(t, HashMap.class, GregorianCalendar.class, String.class);
assertEquals("a", t.get(td1));
assertNull(t.get(td2));
assertEquals("b", t.get(null));
@@ -194,7 +194,7 @@ public class RoundTripMapsTest extends RoundTripTest {
Map<TestEnum,String> t = new TreeMap<TestEnum,String>();
t.put(TestEnum.FOO, "a");
t.put(TestEnum.BAR, null);
- t = roundTripMap(t, TreeMap.class, TestEnum.class, String.class);
+ t = roundTrip(t, TreeMap.class, TestEnum.class, String.class);
assertEquals("a", t.get(TestEnum.FOO));
assertNull(null, t.get(TestEnum.BAR));
@@ -202,7 +202,7 @@ public class RoundTripMapsTest extends RoundTripTest {
t.put(TestEnum.FOO, "a");
t.put(TestEnum.BAR, null);
t.put(null, "b");
- t = roundTripMap(t, HashMap.class, TestEnum.class, String.class);
+ t = roundTrip(t, HashMap.class, TestEnum.class, String.class);
assertEquals("a", t.get(TestEnum.FOO));
assertNull(t.get(TestEnum.BAR));
assertEquals("b", t.get(null));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
index 8dd1407..49b18f8 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
@@ -24,7 +24,7 @@ import org.junit.*;
* Tests designed to serialize and parse objects to make sure we end up
* with the same objects for all serializers and parsers.
*/
-@SuppressWarnings({"unchecked","serial","javadoc"})
+@SuppressWarnings({"serial","javadoc"})
public class RoundTripPrimitivesBeansTest extends RoundTripTest {
public RoundTripPrimitivesBeansTest(String label, Serializer s, Parser p, int flags) throws Exception {
@@ -274,7 +274,7 @@ public class RoundTripPrimitivesBeansTest extends RoundTripTest {
}};
if (p == null)
return;
- t = roundTrip(t, p.getBeanContext().createSession().getCollectionClassMeta(List.class, PrimitivesBean.class));
+ t = roundTrip(t, List.class, PrimitivesBean.class);
PrimitivesBean t2 = t.get(2);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
index 217209a..33cbe28 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
@@ -734,7 +734,7 @@ public class RoundTripSimpleObjectsTest extends RoundTripTest {
t.add(1);
t.add(2);
t.add(3);
- t = roundTripCollection(t, Vector.class, Integer.class);
+ t = roundTrip(t, Vector.class, Integer.class);
}
//====================================================================================================
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 675084a..c0e8070 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -19,6 +19,7 @@ import static org.apache.juneau.urlencoding.UrlEncodingContext.*;
import static org.apache.juneau.xml.XmlSerializerContext.*;
import static org.apache.juneau.html.HtmlSerializerContext.*;
+import java.lang.reflect.Type;
import java.util.*;
import java.util.Map.*;
@@ -230,34 +231,11 @@ public abstract class RoundTripTest {
return null;
}
- public <T> T roundTrip(T object, ClassMeta<? extends T> t) throws Exception {
+ public <T> T roundTrip(T object, Type c, Type...args) throws Exception {
Object out = serialize(object, this.s);
if (p == null)
return object;
- T o = this.p.parse(out, t);
- return (returnOriginalObject ? object : o);
- }
- public <T> T roundTrip(T object, Class<? extends T> c) throws Exception {
- Object out = serialize(object, this.s);
- if (p == null)
- return object;
- T o = this.p.parse(out, p.getBeanContext().getClassMeta(c));
- return (returnOriginalObject ? object : o);
- }
- public <K,V,T extends Map<K,V>> T roundTripMap(T object, Class<? extends T> c, Class<K> k, Class<V> v) throws Exception {
- Object out = serialize(object, this.s);
- if (p == null)
- return object;
- ClassMeta<? extends T> cm = p.getBeanContext().getClassMeta(c, k, v);
- T o = this.p.parse(out, cm);
- return (returnOriginalObject ? object : o);
- }
- public <E,T extends Collection<E>> T roundTripCollection(T object, Class<? extends T> c, Class<E> e) throws Exception {
- Object out = serialize(object, this.s);
- if (p == null)
- return object;
- ClassMeta<? extends T> cm = p.getBeanContext().getClassMeta(c, e);
- T o = this.p.parse(out, cm);
+ T o = (T)this.p.parse(out, c, args);
return (returnOriginalObject ? object : o);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
index 3c7b33a..a3aa3b6 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
@@ -35,7 +35,7 @@ public class RoundTripToObjectMapsTest extends RoundTripTest {
//====================================================================================================
// Class with X(ObjectMap) constructor and toObjectMap() method.
//====================================================================================================
- @SuppressWarnings({ "serial", "unchecked" })
+ @SuppressWarnings({"serial"})
@Test
public void test() throws Exception {
A a = new A(new ObjectMap("{f1:'a',f2:2}"));
@@ -50,13 +50,13 @@ public class RoundTripToObjectMapsTest extends RoundTripTest {
assertEquals(2, aa[0].f2);
List<A> a2 = new ArrayList<A>(){{add(new A(new ObjectMap("{f1:'a',f2:2}")));}};
- a2 = roundTrip(a2, BeanContext.DEFAULT.createSession().getCollectionClassMeta(List.class, A.class));
+ a2 = roundTrip(a2, List.class, A.class);
assertEquals(1, a2.size());
assertEquals("a", a2.get(0).f1);
assertEquals(2, a2.get(0).f2);
Map<String,A> a3 = new LinkedHashMap<String,A>(){{put("a", new A(new ObjectMap("{f1:'a',f2:2}")));}};
- a3 = roundTrip(a3, BeanContext.DEFAULT.createSession().getMapClassMeta(Map.class, String.class, A.class));
+ a3 = roundTrip(a3, Map.class, String.class, A.class);
assertEquals(1, a3.size());
assertEquals("a", a3.get("a").f1);
assertEquals(2, a3.get("a").f2);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/BasicHtmlSchemaTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/BasicHtmlSchemaTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/BasicHtmlSchemaTest.java
index 9291052..ae3a028 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/BasicHtmlSchemaTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/BasicHtmlSchemaTest.java
@@ -807,7 +807,7 @@ public class BasicHtmlSchemaTest {
} catch (AssertionError e) {
throw e;
} catch (Exception e) {
- throw new AssertionError(label + " test failed", e);
+ throw new AssertionError(label + " test failed. exception=" + e.getLocalizedMessage());
}
}
@@ -820,7 +820,7 @@ public class BasicHtmlSchemaTest {
} catch (AssertionError e) {
throw e;
} catch (Exception e) {
- throw new AssertionError(label + " test failed", e);
+ throw new AssertionError(label + " test failed. exception=" + e.getLocalizedMessage());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/HtmlTemplatesTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/HtmlTemplatesTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/HtmlTemplatesTest.java
index 6606228..e4c442c 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/HtmlTemplatesTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/HtmlTemplatesTest.java
@@ -105,7 +105,7 @@ public class HtmlTemplatesTest {
} catch (AssertionError e) {
throw e;
} catch (Exception e) {
- throw new AssertionError(label + " test failed", e);
+ throw new AssertionError(label + " test failed. exception=" + e.getLocalizedMessage());
}
}
@@ -118,7 +118,7 @@ public class HtmlTemplatesTest {
} catch (AssertionError e) {
throw e;
} catch (Exception e) {
- throw new AssertionError(label + " test failed", e);
+ throw new AssertionError(label + " test failed. exception=" + e.getLocalizedMessage());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java
index 45994ec..1e8daff 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java
@@ -236,8 +236,7 @@ public class CommonTest {
String r = s.serialize(l1);
assertEquals("<rdf:Seq><rdf:li rdf:parseType='Resource'><jp:x1><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:x2>2</jp:x2></rdf:li></rdf:Seq></jp:x1><jp:x2>2</jp:x2></rdf:li></rdf:Seq>", strip(r));
- ClassMeta<LinkedList<F>> cm = p.getBeanContext().getClassMeta(LinkedList.class, F.class);
- l2 = p.parse(r, cm);
+ l2 = p.parse(r, LinkedList.class, F.class);
assertEqualObjects(l1, l2);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
index 6becb22..d84ca86 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
@@ -524,7 +524,6 @@ public class RdfTest {
}
@Test
- @SuppressWarnings("unchecked")
public void testLooseCollectionsOfBeans() throws Exception {
WriterSerializer s = new RdfSerializer.XmlAbbrev().setProperty(RDF_looseCollections, true);
ReaderParser p = new RdfParser.Xml().setProperty(RDF_looseCollections, true);
@@ -548,7 +547,7 @@ public class RdfTest {
+ "\n</rdf:RDF>";
assertXmlEquals(expected, rdfXml);
- l = p.parseCollection(rdfXml, LinkedList.class, D.class);
+ l = p.parse(rdfXml, LinkedList.class, D.class);
D[] da = l.toArray(new D[l.size()]);
rdfXml = s.serialize(da);
expected =
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
index 0963c4f..cfe4096 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
@@ -194,7 +194,6 @@ public class JsonTest {
// testWrapperAttrAnnotationOnBean
//====================================================================================================
@Test
- @SuppressWarnings("unchecked")
public void testWrapperAttrAnnotationOnBean() throws Exception {
JsonSerializer s = JsonSerializer.DEFAULT_LAX;
JsonParser p = JsonParser.DEFAULT;
@@ -211,7 +210,7 @@ public class JsonTest {
r = s.serialize(m);
assertEquals("{bar:{foo:{f1:1}}}", r);
- m = p.parseMap(r, LinkedHashMap.class, String.class, A.class);
+ m = p.parse(r, LinkedHashMap.class, String.class, A.class);
assertEquals(1, m.get("bar").f1);
}
@@ -230,7 +229,6 @@ public class JsonTest {
// testWrapperAttrAnnotationOnNonBean
//====================================================================================================
@Test
- @SuppressWarnings("unchecked")
public void testWrapperAttrAnnotationOnNonBean() throws Exception {
JsonSerializer s = JsonSerializer.DEFAULT_LAX;
JsonParser p = JsonParser.DEFAULT;
@@ -247,7 +245,7 @@ public class JsonTest {
r = s.serialize(m);
assertEquals("{bar:{foo:'1'}}", r);
- m = p.parseMap(r, LinkedHashMap.class, String.class, B.class);
+ m = p.parse(r, LinkedHashMap.class, String.class, B.class);
assertEquals(1, m.get("bar").f1);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapTest.java
index ab8565f..a7d593e 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapTest.java
@@ -17,14 +17,13 @@ import static org.junit.Assert.*;
import java.util.*;
-import org.apache.juneau.*;
import org.apache.juneau.a.rttests.*;
import org.apache.juneau.json.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.serializer.*;
import org.junit.*;
-@SuppressWarnings({"unchecked","serial","javadoc"})
+@SuppressWarnings({"serial","javadoc"})
public class ByteArrayBase64SwapTest extends RoundTripTest {
public ByteArrayBase64SwapTest(String label, Serializer s, Parser p, int flags) throws Exception {
@@ -64,15 +63,13 @@ public class ByteArrayBase64SwapTest extends RoundTripTest {
if (p == null)
return;
- BeanSession session = p.getBeanContext().createSession();
-
List<byte[]> fl = new ArrayList<byte[]>() {{
add(new byte[]{1,2,3});
add(new byte[]{4,5,6});
add(null);
}};
assertEquals("['AQID','BAUG',null]", s.serialize(fl));
- fl = roundTrip(fl, session.getCollectionClassMeta(List.class, byte[].class));
+ fl = roundTrip(fl, List.class, byte[].class);
assertEquals(1, fl.get(0)[0]);
assertEquals(5, fl.get(1)[1]);
assertNull(fl.get(2));
@@ -83,7 +80,7 @@ public class ByteArrayBase64SwapTest extends RoundTripTest {
put(null, new byte[]{4,5,6});
put("null", new byte[]{7,8,9});
}};
- fm = roundTrip(fm, session.getMapClassMeta(Map.class, String.class, byte[].class));
+ fm = roundTrip(fm, Map.class, String.class, byte[].class);
assertEquals(1, fm.get("foo")[0]);
assertNull(fm.get(1));
assertEquals(5, fm.get(null)[1]);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
index 6e3823a..5739068 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
@@ -179,8 +179,7 @@ public class CommonParser_UrlEncodingTest {
assertEquals("0=foo&1=bar", s.serialize(l));
String in = "0=foo&1=bar";
- ClassMeta<LinkedList<String>> cm = p.getBeanContext().createSession().getClassMeta(LinkedList.class, String.class);
- l = p.parse(in, cm);
+ l = p.parse(in, LinkedList.class, String.class);
assertObjectEquals("['foo','bar']",l);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UonParserTest.java b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UonParserTest.java
index b18f791..375de89 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UonParserTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UonParserTest.java
@@ -19,7 +19,7 @@ import java.util.*;
import org.apache.juneau.parser.*;
import org.junit.*;
-@SuppressWarnings({"rawtypes","unchecked","javadoc"})
+@SuppressWarnings({"rawtypes","javadoc"})
public class UonParserTest {
static UonParser p = UonParser.DEFAULT;
@@ -48,12 +48,12 @@ public class UonParserTest {
// 2nd level
t = "$o(a=a)";
- assertEquals("a", p.parse(t, Map.class).get("a"));
- assertEquals("a", pe.parse(t, Map.class).get("a"));
+ assertEquals("a", ((Map)p.parse(t, Map.class)).get("a"));
+ assertEquals("a", ((Map)pe.parse(t, Map.class)).get("a"));
t = "(a=a)";
- assertEquals("a", p.parse(t, Map.class).get("a"));
- assertEquals("a", pe.parse(t, Map.class).get("a"));
+ assertEquals("a", ((Map)p.parse(t, Map.class)).get("a"));
+ assertEquals("a", ((Map)pe.parse(t, Map.class)).get("a"));
// Simple map
// Top level
@@ -70,7 +70,7 @@ public class UonParserTest {
assertNull(m.get("f"));
t = "(a=true)";
- m = p.parseMap(t, HashMap.class, String.class, Boolean.class);
+ m = p.parse(t, HashMap.class, String.class, Boolean.class);
assertTrue(m.get("a") instanceof Boolean);
assertEquals("true", m.get("a").toString());
@@ -122,14 +122,14 @@ public class UonParserTest {
// 2nd level in map
t = "$o(x=$a())";
- m = p.parseMap(t, HashMap.class, String.class, List.class);
+ m = p.parse(t, HashMap.class, String.class, List.class);
assertTrue(m.containsKey("x"));
assertTrue(((List)m.get("x")).isEmpty());
m = (Map)p.parse(t, Object.class);
assertTrue(m.containsKey("x"));
assertTrue(((List)m.get("x")).isEmpty());
t = "(x=())";
- m = p.parseMap(t, HashMap.class, String.class, List.class);
+ m = p.parse(t, HashMap.class, String.class, List.class);
assertTrue(m.containsKey("x"));
assertTrue(((List)m.get("x")).isEmpty());
@@ -140,7 +140,7 @@ public class UonParserTest {
l = (List)l.get(0);
assertTrue(l.isEmpty());
t = "(())";
- l = p.parseCollection(t, LinkedList.class, List.class);
+ l = p.parse(t, LinkedList.class, List.class);
assertTrue(l.size() == 1);
l = (List)l.get(0);
assertTrue(l.isEmpty());
@@ -152,7 +152,7 @@ public class UonParserTest {
assertTrue(l.size() == 1);
assertEquals("", l.get(0));
t = "(())";
- l = p.parseCollection(t, List.class, String.class);
+ l = p.parse(t, List.class, String.class);
assertTrue(l.size() == 1);
assertEquals("", l.get(0));
@@ -161,7 +161,7 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("", ((List)m.get("")).get(0));
t = "(=(()))";
- m = p.parseMap(t, HashMap.class, String.class, List.class);
+ m = p.parse(t, HashMap.class, String.class, List.class);
assertEquals("", ((List)m.get("")).get(0));
// Array containing 3 empty strings
@@ -172,7 +172,7 @@ public class UonParserTest {
assertEquals("", l.get(1));
assertEquals("", l.get(2));
t = "(,,)";
- l = p.parseCollection(t, List.class, Object.class);
+ l = p.parse(t, List.class, Object.class);
assertTrue(l.size() == 3);
assertEquals("", l.get(0));
assertEquals("", l.get(1));
@@ -192,10 +192,10 @@ public class UonParserTest {
assertTrue(m.size() == 1);
assertEquals("\u0000", m.get("\u0000"));
t = "((\u0000)=(\u0000))";
- m = p.parseMap(t, HashMap.class, String.class, String.class);
+ m = p.parse(t, HashMap.class, String.class, String.class);
assertTrue(m.size() == 1);
assertEquals("\u0000", m.get("\u0000"));
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertTrue(m.size() == 1);
assertEquals("\u0000", m.get("\u0000"));
@@ -215,10 +215,10 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals(Boolean.FALSE, m.get("x"));
t = "(x=$b(false))";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals(Boolean.FALSE, m.get("x"));
t = "(x=false)";
- m = p.parseMap(t, HashMap.class, String.class, Boolean.class);
+ m = p.parse(t, HashMap.class, String.class, Boolean.class);
assertEquals(Boolean.FALSE, m.get("x"));
// Number
@@ -241,9 +241,9 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals(123, ((Integer)m.get("x")).intValue());
t = "(x=123)";
- m = p.parseMap(t, HashMap.class, String.class, Number.class);
+ m = p.parse(t, HashMap.class, String.class, Number.class);
assertEquals(123, ((Integer)m.get("x")).intValue());
- m = p.parseMap(t, HashMap.class, String.class, Double.class);
+ m = p.parse(t, HashMap.class, String.class, Double.class);
assertEquals(123, ((Double)m.get("x")).intValue());
// Unencoded chars
@@ -256,9 +256,9 @@ public class UonParserTest {
t = "$o(x;/?:@-_.!*'=x;/?:@-_.!*')";
m = (Map)p.parse(t, Object.class);
assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
- m = p.parseMap(t, HashMap.class, String.class, String.class);
+ m = p.parse(t, HashMap.class, String.class, String.class);
assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
// Encoded chars
@@ -330,13 +330,13 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("x=", m.get("x="));
t = "(x~==x~=)";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x=", m.get("x="));
t = "((x~=)=(x~=))";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x=", m.get("x="));
t = "($s(x~=)=$s(x~=))";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x=", m.get("x="));
t = "$o(x~%3D=x~%3D)";
m = (Map)pe.parse(t, Object.class);
@@ -348,13 +348,13 @@ public class UonParserTest {
m = (Map)pe.parse(t, Object.class);
assertEquals("x=", m.get("x="));
t = "(x~%3D=x~%3D)";
- m = pe.parseMap(t, HashMap.class, String.class, Object.class);
+ m = pe.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x=", m.get("x="));
t = "((x~%3D)=(x~%3D))";
- m = pe.parseMap(t, HashMap.class, String.class, Object.class);
+ m = pe.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x=", m.get("x="));
t = "($s(x~%3D)=$s(x~%3D))";
- m = pe.parseMap(t, HashMap.class, String.class, Object.class);
+ m = pe.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x=", m.get("x="));
// String starting with parenthesis
@@ -375,10 +375,10 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("()", m.get("()"));
t = "((~(~))=(~(~)))";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("()", m.get("()"));
t = "($s(~(~))=$s(~(~)))";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("()", m.get("()"));
// String starting with $
@@ -393,7 +393,7 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("$a", m.get("$a"));
t = "(($a)=($a))";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("$a", m.get("$a"));
// Blank string
@@ -407,7 +407,7 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("", m.get(""));
t = "(=)";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("", m.get(""));
// 3rd level
@@ -415,7 +415,7 @@ public class UonParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("", ((Map)m.get("")).get(""));
t = "(=(=))";
- m = p.parseMap(t, HashMap.class, String.class, HashMap.class);
+ m = p.parse(t, HashMap.class, String.class, HashMap.class);
assertEquals("", ((Map)m.get("")).get(""));
// Newline character
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java
index 18f12c9..911bf22 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java
@@ -21,7 +21,7 @@ import org.apache.juneau.*;
import org.apache.juneau.parser.*;
import org.junit.*;
-@SuppressWarnings({"rawtypes","unchecked","javadoc"})
+@SuppressWarnings({"rawtypes","javadoc"})
public class UrlEncodingParserTest {
static UrlEncodingParser p = UrlEncodingParser.DEFAULT;
@@ -58,7 +58,7 @@ public class UrlEncodingParserTest {
// 2nd level
t = "?a=a";
- assertEquals("a", p.parse(t, Map.class).get("a"));
+ assertEquals("a", ((Map)p.parse(t, Map.class)).get("a"));
// Simple map
// Top level
@@ -90,7 +90,7 @@ public class UrlEncodingParserTest {
assertNull(m.get("f"));
t = "?a=true";
- m = p.parseMap(t, HashMap.class, String.class, Boolean.class);
+ m = p.parse(t, HashMap.class, String.class, Boolean.class);
assertTrue(m.get("a") instanceof Boolean);
assertEquals("true", m.get("a").toString());
@@ -137,14 +137,14 @@ public class UrlEncodingParserTest {
// 2nd level in map
t = "?x=$a()";
- m = p.parseMap(t, HashMap.class, String.class, List.class);
+ m = p.parse(t, HashMap.class, String.class, List.class);
assertTrue(m.containsKey("x"));
assertTrue(((List)m.get("x")).isEmpty());
m = (Map)p.parse(t, Object.class);
assertTrue(m.containsKey("x"));
assertTrue(((List)m.get("x")).isEmpty());
t = "?x=()";
- m = p.parseMap(t, HashMap.class, String.class, List.class);
+ m = p.parse(t, HashMap.class, String.class, List.class);
assertTrue(m.containsKey("x"));
assertTrue(((List)m.get("x")).isEmpty());
@@ -155,7 +155,7 @@ public class UrlEncodingParserTest {
l = (List)l.get(0);
assertTrue(l.isEmpty());
t = "0=()";
- l = p.parseCollection(t, LinkedList.class, List.class);
+ l = p.parse(t, LinkedList.class, List.class);
assertTrue(l.size() == 1);
l = (List)l.get(0);
assertTrue(l.isEmpty());
@@ -165,7 +165,7 @@ public class UrlEncodingParserTest {
l = (List)l.get(0);
assertTrue(l.isEmpty());
t = "(())";
- l = (List)p.parseParameter(t, p.getBeanContext().getClassMeta(LinkedList.class, List.class));
+ l = (List)p.parseParameter(t, LinkedList.class, List.class);
assertTrue(l.size() == 1);
l = (List)l.get(0);
assertTrue(l.isEmpty());
@@ -177,7 +177,7 @@ public class UrlEncodingParserTest {
assertTrue(l.size() == 1);
assertEquals("", l.get(0));
t = "0=()";
- l = p.parseCollection(t, List.class, String.class);
+ l = p.parse(t, List.class, String.class);
assertTrue(l.size() == 1);
assertEquals("", l.get(0));
t = "$a(())";
@@ -185,7 +185,7 @@ public class UrlEncodingParserTest {
assertTrue(l.size() == 1);
assertEquals("", l.get(0));
t = "(())";
- l = (List)p.parseParameter(t, p.getBeanContext().getClassMeta(List.class, String.class));
+ l = (List)p.parseParameter(t, List.class, String.class);
assertTrue(l.size() == 1);
assertEquals("", l.get(0));
@@ -194,7 +194,7 @@ public class UrlEncodingParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("", ((List)m.get("")).get(0));
t = "?()=(())";
- m = p.parseMap(t, HashMap.class, String.class, List.class);
+ m = p.parse(t, HashMap.class, String.class, List.class);
assertEquals("", ((List)m.get("")).get(0));
// Array containing 3 empty strings
@@ -205,7 +205,7 @@ public class UrlEncodingParserTest {
assertEquals("", l.get(1));
assertEquals("", l.get(2));
t = "0=&1=&2=";
- l = p.parseCollection(t, List.class, Object.class);
+ l = p.parse(t, List.class, Object.class);
assertTrue(l.size() == 3);
assertEquals("", l.get(0));
assertEquals("", l.get(1));
@@ -217,7 +217,7 @@ public class UrlEncodingParserTest {
assertEquals("", l.get(1));
assertEquals("", l.get(2));
t = "(,,)";
- l = (List)p.parseParameter(t, p.getBeanContext().getClassMeta(List.class, Object.class));
+ l = (List)p.parseParameter(t, List.class, Object.class);
assertTrue(l.size() == 3);
assertEquals("", l.get(0));
assertEquals("", l.get(1));
@@ -241,7 +241,7 @@ public class UrlEncodingParserTest {
m = (Map)p.parse(t, Object.class);
assertTrue(m.size() == 1);
assertEquals("\u0000", m.get("\u0000"));
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertTrue(m.size() == 1);
assertEquals("\u0000", m.get("\u0000"));
@@ -269,7 +269,7 @@ public class UrlEncodingParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals(Boolean.FALSE, m.get("x"));
t = "?x=false";
- m = p.parseMap(t, HashMap.class, String.class, Boolean.class);
+ m = p.parse(t, HashMap.class, String.class, Boolean.class);
assertEquals(Boolean.FALSE, m.get("x"));
// Number
@@ -303,7 +303,7 @@ public class UrlEncodingParserTest {
t = "?x=$n(123)";
m = (Map)p.parse(t, Object.class);
assertEquals(123, ((Integer)m.get("x")).intValue());
- m = p.parseMap(t, HashMap.class, String.class, Double.class);
+ m = p.parse(t, HashMap.class, String.class, Double.class);
assertEquals(123, ((Double)m.get("x")).intValue());
// Unencoded chars
@@ -317,9 +317,9 @@ public class UrlEncodingParserTest {
t = "?x;/?:@-_.!*'=x;/?:@-_.!*'";
m = (Map)p.parse(t, Object.class);
assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
- m = p.parseMap(t, HashMap.class, String.class, String.class);
+ m = p.parse(t, HashMap.class, String.class, String.class);
assertEquals("x;/?:@-_.!*'", m.get("x;/?:@-_.!*'"));
// Encoded chars
@@ -419,7 +419,7 @@ public class UrlEncodingParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("()", m.get("()"));
t = "?(~(~))=(~(~))";
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("()", m.get("()"));
// String starting with $
@@ -437,7 +437,7 @@ public class UrlEncodingParserTest {
t = "?(~$a)=(~$a)";
m = (Map)p.parse(t, Object.class);
assertEquals("$a", m.get("$a"));
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("$a", m.get("$a"));
// Blank string
@@ -451,7 +451,7 @@ public class UrlEncodingParserTest {
t = "?=";
m = (Map)p.parse(t, Object.class);
assertEquals("", m.get(""));
- m = p.parseMap(t, HashMap.class, String.class, Object.class);
+ m = p.parse(t, HashMap.class, String.class, Object.class);
assertEquals("", m.get(""));
// 3rd level
@@ -459,7 +459,7 @@ public class UrlEncodingParserTest {
m = (Map)p.parse(t, Object.class);
assertEquals("", ((Map)m.get("")).get(""));
t = "?=(=)";
- m = p.parseMap(t, HashMap.class, String.class, HashMap.class);
+ m = p.parse(t, HashMap.class, String.class, HashMap.class);
assertEquals("", ((Map)m.get("")).get(""));
// Newline character
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
index d0a229d..dd88562 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
@@ -76,7 +76,7 @@ import org.apache.juneau.transform.*;
* <p>
* Settings are specified using the {@link ContextFactory#setProperty(String, Object)} method and related convenience methods.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a context from scratch.</jc>
* BeanContext beanContext = ContextFactory.<jsm>create</jsm>()
@@ -316,6 +316,15 @@ import org.apache.juneau.transform.*;
* </tr>
* <tr>
* <td>
+ * {@link #BEAN_mediaType}
+ * </td>
+ * <td>Default media type value for serializer and parser sessions</td>
+ * <td>{@link MediaType}</td>
+ * <td><jk>null</jk></td>
+ * <td><jk>true</jk></td>
+ * </tr>
+ * <tr>
+ * <td>
* {@link #BEAN_debug}
* </td>
* <td>Debug mode.</td>
@@ -337,7 +346,7 @@ import org.apache.juneau.transform.*;
* <li> {@link BeanSession#newBeanMap(Class) BeanSession.newBeanMap()} - Create a new bean instance wrapped in a {@code Map} wrapper.
* </ol>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// A sample bean class</jc>
* <jk>public class</jk> Person {
@@ -366,7 +375,7 @@ import org.apache.juneau.transform.*;
* <p>
* This package contains annotations that can be applied to
* class definitions to override what properties are detected on a bean.
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Bean class definition where only property 'name' is detected.</jc>
* <ja>@Bean</ja>(properties=<js>"name"</js>)
@@ -1262,163 +1271,99 @@ public class BeanContext extends Context {
}
/**
- * Returns the class type bound to this bean context if the specified class type
- * is from another bean context.
- * <p>
- * For example, this method allows you to pass in an object from <code>BeanContext.<jsf>DEFAULT</jsf>.getMapClassMeta(...)</code>
- * to any of the <code>ReaderParser.parse(Reader, ClassMeta, ParserContext)</code> methods, and the parsers
- * will use this method to replace the class type with the one registered with the parser.
- * This ensures that registered transforms are applied correctly.
- *
- * @param <T> The class type.
- * @param cm The class type.
- * @return The class type bound by this bean context.
- */
- protected final <T> ClassMeta<T> normalizeClassMeta(ClassMeta<T> cm) {
- if (cm == null)
- return (ClassMeta<T>)object();
- if (cm.getBeanContext().equals(this))
- return cm;
- if (cm.isMap()) {
- ClassMeta<Map> cm2 = (ClassMeta<Map>)cm;
- cm2 = getClassMeta(cm2.getInnerClass(), cm2.getKeyType().getInnerClass(), cm2.getValueType().getInnerClass());
- return (ClassMeta<T>)cm2;
- }
- if (cm.isCollection()) {
- ClassMeta<Collection> cm2 = (ClassMeta<Collection>)cm;
- cm2 = getClassMeta(cm2.getInnerClass(), cm2.getElementType().getInnerClass());
- return (ClassMeta<T>)cm2;
- }
- return getClassMeta(cm.getInnerClass());
- }
-
- /**
- * Resolves the following types of objects:
- * <ul>
- * <li>{@link Class}
- * <li><code>Object[2]</code> containing <code>{Class<? extends Collection>, Object}</code>
- * where the 2nd entry is the entry type which can be anything on this list.
- * <li><code>Object[3]</code> containing <code>{Class<? extends Map>, Object, Object}</code>
- * where the 2nd entry is the key type and 3rd entry is the value type which can be anything on this list.
- * </ul>
- *
- * @param o
- * @return The resolved class meta.
- */
- public final <T> ClassMeta<T> getClassMeta(Object o) {
- if (o == null)
- return null;
- if (o instanceof Class)
- return getClassMeta((Class)o);
- if (o instanceof Type)
- return getClassMeta((Type)o);
- if (List.class.isAssignableFrom(o.getClass())) {
- List l = (List)o;
- o = l.toArray(new Object[l.size()]);
- return getClassMeta((Object[])o);
- }
- if (o.getClass().isArray())
- return getClassMeta((Object[])o);
- throw new BeanRuntimeException("Invalid object type passed to getClassMeta(): ''{0}''. Only Class or arrays containing Class is supported.", o.getClass().getName());
- }
-
- /**
- * Resolves the following types of objects:
- * <ul>
- * <li><code>Object[2]</code> containing <code>{Class<? extends Collection>, Object}</code>
- * where the 2nd entry is the entry type which can be anything on this list.
- * <li><code>Object[3]</code> containing <code>{Class<? extends Map>, Object, Object}</code>
- * where the 2nd entry is the key type and 3rd entry is the value type which can be anything on this list.
- * </ul>
- *
- * @param o
- * @return The resolved class meta.
- */
- public final <T> ClassMeta<T> getClassMeta(Object...o) {
- if (o == null)
- return null;
- int len = o.length;
- if (len == 2) {
- Object oc = Array.get(o, 0);
- if (oc instanceof Class) {
- Class c = (Class)oc;
- if (Collection.class.isAssignableFrom(c)) {
- ClassMeta<?> rawType = getClassMeta(c);
- ClassMeta<?> ce = getClassMeta(Array.get(o, 1));
- if (ce.isObject())
- return (ClassMeta<T>)rawType;
- return new ClassMeta(rawType, null, null, ce);
- }
- }
- } else if (len == 3) {
- Object oc = Array.get(o, 0);
- if (oc instanceof Class) {
- Class c = (Class)oc;
- if (Map.class.isAssignableFrom(c)) {
- ClassMeta<?> rawType = getClassMeta(c);
- ClassMeta<?> ck = getClassMeta(Array.get(o, 1));
- ClassMeta<?> cv = getClassMeta(Array.get(o, 2));
- if (ck.isObject() && cv.isObject())
- return (ClassMeta<T>)rawType;
- return new ClassMeta(rawType, ck, cv, null);
- }
- }
- }
- throw new BeanRuntimeException("Invalid object type passed to getClassMeta(): ''{0}''. Only Class or arrays containing Class is supported.", o.getClass().getName());
- }
-
- /**
* Construct a {@code ClassMeta} wrapper around a {@link Class} object.
*
* @param <T> The class type being wrapped.
- * @param c The class being wrapped.
- * of type {@link Class} or {@link ClassMeta}.
+ * @param type The class to resolve.
* @return If the class is not an array, returns a cached {@link ClassMeta} object.
* Otherwise, returns a new {@link ClassMeta} object every time.<br>
*/
- public final <T> ClassMeta<T> getClassMeta(Class<T> c) {
+ public final <T> ClassMeta<T> getClassMeta(Class<T> type) {
// If this is an array, then we want it wrapped in an uncached ClassMeta object.
// Note that if it has a pojo swap, we still want to cache it so that
// we can cache something like byte[] with ByteArrayBase64Swap.
- if (c.isArray() && findPojoSwap(c) == null)
- return new ClassMeta(c, this, findImplClass(c), findBeanFilter(c), findPojoSwap(c), findChildPojoSwaps(c));
+ if (type.isArray() && findPojoSwap(type) == null)
+ return new ClassMeta(type, this, findImplClass(type), findBeanFilter(type), findPojoSwap(type), findChildPojoSwaps(type));
// This can happen if we have transforms defined against String or Object.
if (cmCache == null)
return null;
- ClassMeta<T> cm = cmCache.get(c);
+ ClassMeta<T> cm = cmCache.get(type);
if (cm == null) {
synchronized (this) {
// Make sure someone didn't already set it while this thread was blocked.
- cm = cmCache.get(c);
+ cm = cmCache.get(type);
if (cm == null)
- cm = new ClassMeta<T>(c, this, findImplClass(c), findBeanFilter(c), findPojoSwap(c), findChildPojoSwaps(c));
+ cm = new ClassMeta<T>(type, this, findImplClass(type), findBeanFilter(type), findPojoSwap(type), findChildPojoSwaps(type));
}
}
return cm;
}
/**
- * Constructs a ClassMeta object given the specified object and parameters.
+ * Used to resolve <code>ClassMetas</code> of type <code>Collection</code> and <code>Map</code> that have
+ * <code>ClassMeta</code> values that themselves could be collections or maps.
+ * <p>
+ * <code>Collection</code> meta objects are assumed to be followed by zero or one meta objects indicating the element type.
+ * <p>
+ * <code>Map</code> meta objects are assumed to be followed by zero or two meta objects indicating the key and value types.
+ * <p>
+ * The array can be arbitrarily long to indicate arbitrarily complex data structures.
*
- * @param o The parent class type.
- * Can be any of the following types:
- * <ul class='spaced-list'>
- * <li>{@link ClassMeta} object, which just returns the same object.
- * <li>{@link Class} object (e.g. <code>String.<jk>class</jk></code>).
- * <li>{@link Type} object (e.g. {@link ParameterizedType} or {@link GenericArrayType}.
- * <li>Anything else is interpreted as {@code getClassMeta(o.getClass(), parameters);}
- * </ul>
- * @return A ClassMeta object, or <jk>null</jk> if the object is null.
+ * <h5 class='section'>Examples:</h5>
+ * <ul>
+ * <li><code>getClassMeta(String.<jk>class</jk>);</code> - A normal type.
+ * <li><code>getClassMeta(List.<jk>class</jk>);</code> - A list containing objects.
+ * <li><code>getClassMeta(List.<jk>class</jk>, String.<jk>class</jk>);</code> - A list containing strings.
+ * <li><code>getClassMeta(LinkedList.<jk>class</jk>, String.<jk>class</jk>);</code> - A linked-list containing strings.
+ * <li><code>getClassMeta(LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);</code> - A linked-list containing linked-lists of strings.
+ * <li><code>getClassMeta(Map.<jk>class</jk>);</code> - A map containing object keys/values.
+ * <li><code>getClassMeta(Map.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);</code> - A map containing string keys/values.
+ * <li><code>getClassMeta(Map.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);</code> - A map containing string keys and values of lists containing beans.
+ * </ul>
+ *
+ * @param type The class to resolve.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
+ * @return The resolved class meta.
*/
- public final ClassMeta getClassMeta(Type o) {
- return getClassMeta(o, null);
+ public final <T> ClassMeta<T> getClassMeta(Type type, Type...args) {
+ if (type == null)
+ return null;
+ ClassMeta<T> cm = type instanceof Class ? getClassMeta((Class)type) : resolveClassMeta(type, null);
+ if (args.length == 0)
+ return cm;
+ ClassMeta<?>[] cma = new ClassMeta[args.length+1];
+ cma[0] = cm;
+ for (int i = 0; i < Array.getLength(args); i++) {
+ Type arg = (Type)Array.get(args, i);
+ cma[i+1] = arg instanceof Class ? getClassMeta((Class)arg) : resolveClassMeta(arg, null);
+ }
+ return (ClassMeta<T>) getTypedClassMeta(cma, 0);
+ }
+
+ /*
+ * Resolves the 'genericized' class meta at the specified position in the ClassMeta array.
+ */
+ private ClassMeta<?> getTypedClassMeta(ClassMeta<?>[] c, int pos) {
+ ClassMeta<?> cm = c[pos++];
+ if (cm.isCollection()) {
+ ClassMeta<?> ce = c.length == pos ? object() : getTypedClassMeta(c, pos);
+ return (ce.isObject() ? cm : new ClassMeta(cm, null, null, ce));
+ } else if (cm.isMap()) {
+ ClassMeta<?> ck = c.length == pos ? object() : c[pos++];
+ ClassMeta<?> cv = c.length == pos ? object() : getTypedClassMeta(c, pos);
+ return (ck.isObject() && cv.isObject() ? cm : new ClassMeta(cm, ck, cv, null));
+ }
+ return cm;
}
- final ClassMeta getClassMeta(Type o, Map<Class<?>,Class<?>[]> typeVarImpls) {
+ final ClassMeta resolveClassMeta(Type o, Map<Class<?>,Class<?>[]> typeVarImpls) {
if (o == null)
return null;
@@ -1530,7 +1475,7 @@ public class BeanContext extends Context {
for (Type pt2 : pt.getActualTypeArguments()) {
if (pt2 instanceof WildcardType || pt2 instanceof TypeVariable)
return null;
- l.add(getClassMeta(pt2, null));
+ l.add(resolveClassMeta(pt2, null));
}
if (l.isEmpty())
return null;
@@ -1567,13 +1512,13 @@ public class BeanContext extends Context {
* Can be <jk>null</jk> if the information is not known.
* @return The new {@code ClassMeta} object wrapped around the {@code Type} object.
*/
- protected final <T> ClassMeta<T> getClassMeta(BeanProperty p, Type t, Map<Class<?>,Class<?>[]> typeVarImpls) {
- ClassMeta<T> cm = getClassMeta(t, typeVarImpls);
+ protected final <T> ClassMeta<T> resolveClassMeta(BeanProperty p, Type t, Map<Class<?>,Class<?>[]> typeVarImpls) {
+ ClassMeta<T> cm = resolveClassMeta(t, typeVarImpls);
ClassMeta<T> cm2 = cm;
if (p != null) {
if (p.type() != Object.class)
- cm2 = getClassMeta(p.type(), typeVarImpls);
+ cm2 = resolveClassMeta(p.type(), typeVarImpls);
if (cm2.isMap()) {
Class<?>[] pParams = (p.params().length == 0 ? new Class[]{Object.class, Object.class} : p.params());
@@ -1619,7 +1564,7 @@ public class BeanContext extends Context {
// /**
// * Converts class name strings to ClassMeta objects.
// *
-// * <h6 class='topic'>Example:</h6>
+// * <h5 class='section'>Example:</h5>
// * <ul>
// * <li><js>"java.lang.String"</js>
// * <li><js>"com.foo.sample.MyBean[]"</js>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMap.java b/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
index 8b7d563..4e1bad6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
@@ -24,7 +24,7 @@ import org.apache.juneau.xml.annotation.*;
/**
* Java bean wrapper class.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* A wrapper that wraps Java bean instances inside of a {@link Map} interface that allows
* properties on the wrapped object can be accessed using the {@link Map#get(Object) get()} and {@link Map#put(Object,Object) put()} methods.
@@ -170,7 +170,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
* {@link BeanProperty#swap() @BeanProperty.swap()} annotation, the value being passed in must be
* a String containing an ISO8601 date-time string value.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a bean with a 'birthDate' Date field</jc>
* Person p = <jk>new</jk> Person();
@@ -253,7 +253,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
* {@link BeanProperty#swap() @BeanProperty.swap()} annotation, this method will return a String
* containing an ISO8601 date-time string value.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a bean with a 'birthDate' Date field</jc>
* Person p = <jk>new</jk> Person();
@@ -294,7 +294,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
* depends on the default parser specified by the {@link BeanContext#BEAN_defaultParser} property
* value on the config that created the context that created this map.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* aPersonBean.load(<js>"{name:'John Smith',age:21}"</js>)
* </p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java b/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
index 47da2b8..b7a2758 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
@@ -22,7 +22,7 @@ import org.apache.juneau.transform.*;
* <p>
* This class can be used to get and set property values on a bean, or to get metadata on a property.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a new bean</jc>
* Person p = <jk>new</jk> Person();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java b/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
index 4716371..42425ee 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
@@ -29,7 +29,7 @@ import org.apache.juneau.utils.*;
/**
* Encapsulates all access to the properties of a bean class (like a souped-up {@link java.beans.BeanInfo}).
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Uses introspection to find all the properties associated with this class. If the {@link Bean @Bean} annotation
* is present on the class, or the class has a {@link BeanFilter} registered with it in the bean context,
[4/7] incubator-juneau git commit: Eliminate ClassMeta dependencies
from Parser. Clean up docs.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
index a3a6722..2c68e09 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
@@ -18,7 +18,6 @@ import java.lang.reflect.*;
import java.util.*;
import org.apache.juneau.*;
-import org.apache.juneau.MediaType;
import org.apache.juneau.annotation.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.parser.*;
@@ -27,11 +26,11 @@ import org.apache.juneau.transform.*;
/**
* Parses URL-encoded text into POJO models.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Content-Type</code> types: <code>application/x-www-form-urlencoded</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Parses URL-Encoded text (e.g. <js>"foo=bar&baz=bing"</js>) into POJOs.
* <p>
@@ -39,7 +38,7 @@ import org.apache.juneau.transform.*;
* <p>
* This parser uses a state machine, which makes it very fast and efficient.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -429,17 +428,21 @@ public class UrlEncodingParser extends UonParser {
* Parses a single query parameter value into the specified class type.
*
* @param in The input query string value.
- * @param type The class type of the object to create.
+ * @param type The object type to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @return A new instance of the specified type.
* @throws ParseException
*/
- public <T> T parseParameter(CharSequence in, ClassMeta<T> type) throws ParseException {
+ public <T> T parseParameter(CharSequence in, Type type, Type...args) throws ParseException {
if (in == null)
return null;
UonParserSession session = createParameterSession(in);
try {
UonReader r = session.getReader();
- return super.parseAnything(session, type, r, null, true, null);
+ return (T)super.parseAnything(session, session.getClassMeta(type, args), r, null, true, null);
} catch (ParseException e) {
throw e;
} catch (Exception e) {
@@ -473,6 +476,31 @@ public class UrlEncodingParser extends UonParser {
}
}
+ /**
+ * Same as {@link #parseParameter(CharSequence, Type, Type...)} except the type has already
+ * been converted to a {@link ClassMeta} object.
+ *
+ * @param in The input query string value.
+ * @param type The class type of the object to create.
+ * @return A new instance of the specified type.
+ * @throws ParseException
+ */
+ public <T> T parseParameter(CharSequence in, ClassMeta<T> type) throws ParseException {
+ if (in == null)
+ return null;
+ UonParserSession session = createParameterSession(in);
+ try {
+ UonReader r = session.getReader();
+ return super.parseAnything(session, type, r, null, true, null);
+ } catch (ParseException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ParseException(session, e);
+ } finally {
+ session.close();
+ }
+ }
+
//--------------------------------------------------------------------------------
// Overridden methods
//--------------------------------------------------------------------------------
@@ -485,7 +513,6 @@ public class UrlEncodingParser extends UonParser {
@Override /* Parser */
protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
UrlEncodingParserSession s = (UrlEncodingParserSession)session;
- type = session.normalizeClassMeta(type);
UonReader r = s.getReader();
T o = parseAnything(s, type, r, s.getOuter());
return o;
@@ -505,7 +532,7 @@ public class UrlEncodingParser extends UonParser {
UonReader r = s.getReader();
if (r.peek() == '?')
r.read();
- m = parseIntoMap(s, r, m, session.getClassMeta(keyType), session.getClassMeta(valueType));
+ m = parseIntoMap(s, r, m, (ClassMeta<K>)session.getClassMeta(keyType), (ClassMeta<V>)session.getClassMeta(valueType));
return m;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
index 5df8849..fa13729 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserContext.java
@@ -60,7 +60,7 @@ public class UrlEncodingParserContext extends UonParserContext {
* If <jk>false</jk>, serializing the array <code>[1,2,3]</code> results in <code>?key=$a(1,2,3)</code>.
* If <jk>true</jk>, serializing the same array results in <code>?key=1&key=2&key=3</code>.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> A {
* <jk>public</jk> String[] f1 = {<js>"a"</js>,<js>"b"</js>};
@@ -74,11 +74,14 @@ public class UrlEncodingParserContext extends UonParserContext {
* String s2 = p2.serialize(<jk>new</jk> A()); <jc>// Produces "f1=a&f1=b&f2=c&f2=d"</jc>
* </p>
* <p>
- * <b>Important note:</b> If parsing multi-part parameters, it's highly recommended to use Collections or Lists
- * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value
- * is added to it.
- * <p>
* This option only applies to beans.
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>If parsing multi-part parameters, it's highly recommended to use Collections or Lists
+ * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value
+ * is added to it.
+ * </ul>
*/
public static final String URLENC_expandedParams = "UrlEncoding.expandedParams";
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
index e96ef9b..6bb81d5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
@@ -29,18 +29,18 @@ import org.apache.juneau.transform.*;
/**
* Serializes POJO models to URL-encoded notation with UON-encoded values (a notation for URL-encoded query paramter values).
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>application/x-www-form-urlencoded</code>
* <p>
* Produces <code>Content-Type</code> types: <code>application/x-www-form-urlencoded</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This serializer provides several serialization options. Typically, one of the predefined DEFAULT serializers will be sufficient.
* However, custom serializers can be constructed to fine-tune behavior.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -121,7 +121,7 @@ import org.apache.juneau.transform.*;
* )
* </p>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Serialize a Map</jc>
* Map m = <jk>new</jk> ObjectMap(<js>"{a:'b',c:1,d:false,e:['f',1,false],g:{h:'i'}}"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
index fc5bd2c..0e68416 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerContext.java
@@ -61,7 +61,7 @@ public class UrlEncodingSerializerContext extends UonSerializerContext {
* If <jk>false</jk>, serializing the array <code>[1,2,3]</code> results in <code>?key=$a(1,2,3)</code>.
* If <jk>true</jk>, serializing the same array results in <code>?key=1&key=2&key=3</code>.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> A {
* <jk>public</jk> String[] f1 = {<js>"a"</js>,<js>"b"</js>};
@@ -75,11 +75,14 @@ public class UrlEncodingSerializerContext extends UonSerializerContext {
* String s2 = p2.serialize(<jk>new</jk> A()); <jc>// Produces "f1=a&f1=b&f2=c&f2=d"</jc>
* </p>
* <p>
- * <b>Important note:</b> If parsing multi-part parameters, it's highly recommended to use Collections or Lists
- * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value
- * is added to it.
- * <p>
* This option only applies to beans.
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>If parsing multi-part parameters, it's highly recommended to use Collections or Lists
+ * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value
+ * is added to it.
+ * </ul>
*/
public static final String URLENC_expandedParams = "UrlEncoding.expandedParams";
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/utils/Args.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/Args.java b/juneau-core/src/main/java/org/apache/juneau/utils/Args.java
index 58176db..4d4d01d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/Args.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/Args.java
@@ -37,7 +37,7 @@ import org.apache.juneau.internal.*;
* <li><code>java com.sample.MyClass mainArg1 -optArg1 optArg1Val1 -optArg1 optArg1Val2</code>
* </ul>
*
- * <h6 class='topic'>Code examples</h6>
+ * <h5 class='section'>Examples:</h5>
* <p class='bcode'>
*
* <jc>// Main method with arguments</jc>
@@ -193,7 +193,7 @@ public final class Args extends ObjectMap {
* <p>
* If the optional arg has multiple values, returns only the first converted value.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Command: java com.sample.MyClass -verbose true -debug 5</jc>
* <jk>boolean</jk> b = args.getArg(<jk>boolean</jk>.<jk>class</jk>, <js>"verbose"</js>);
@@ -215,7 +215,7 @@ public final class Args extends ObjectMap {
/**
* Returns the optional argument values as a list of strings.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Command: java com.sample.MyClass -extraArgs foo bar baz</jc>
* List<String> l1 = args.getArgs(<js>"extraArgs"</js>); <jc>// ['foo','bar','baz']</jc>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/utils/MessageBundle.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/MessageBundle.java b/juneau-core/src/main/java/org/apache/juneau/utils/MessageBundle.java
index 965a2d9..190e68c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/MessageBundle.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/MessageBundle.java
@@ -154,7 +154,7 @@ public class MessageBundle extends ResourceBundle {
* Similar to {@link ResourceBundle#getString(String)} except allows you to pass in {@link MessageFormat} objects.
*
* @param key The resource bundle key.
- * @param args Optional variable replacement arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @return The resolved value. Never <jk>null</jk>. <js>"{!!key}"</js> if the bundle is missing. <js>"{!key}"</js> if the key is missing.
*/
public String getString(String key, Object...args) {
@@ -171,7 +171,7 @@ public class MessageBundle extends ResourceBundle {
*
* @param locale The locale of the resource bundle to retrieve message from.
* @param key The resource bundle key.
- * @param args Optional variable replacement arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @return The resolved value. Never <jk>null</jk>. <js>"{!!key}"</js> if the bundle is missing. <js>"{!key}"</js> if the key is missing.
*/
public String getString(Locale locale, String key, Object...args) {
@@ -184,7 +184,7 @@ public class MessageBundle extends ResourceBundle {
* Same as {@link #getString(String, Object...)} but uses the locale specified on the call to {@link #setClientLocale(Locale)}.
*
* @param key The resource bundle key.
- * @param args Optional variable replacement arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @return The resolved value. Never <jk>null</jk>. <js>"{!!key}"</js> if the bundle is missing. <js>"{!key}"</js> if the key is missing.
*/
public String getClientString(String key, Object...args) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/utils/PojoIntrospector.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/PojoIntrospector.java b/juneau-core/src/main/java/org/apache/juneau/utils/PojoIntrospector.java
index 44d5580..908fc5d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/PojoIntrospector.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/PojoIntrospector.java
@@ -23,7 +23,7 @@ import org.apache.juneau.parser.*;
/**
* Used to invoke methods on {@code Objects} using arguments in serialized form.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* String s = <js>"foobar"</js>;
* String s2 = (String)<jk>new</jk> PojoIntrospector(s).invoke(<js>"substring(int,int)"</js>, <js>"[3,6]"</js>); <jc>// "bar"</jc>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java b/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
index 4e0d2ec..1f2ff64 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
@@ -66,7 +66,7 @@ import org.apache.juneau.internal.*;
* Search patterns can be either {@code Strings} or {@code Maps}.<br>
* Multiple search patterns are ANDed (i.e. all patterns must match for the row to be returned).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <ul class='spaced-list'>
* <li><tt>{fi:'123'}</tt> - Return only rows where the <tt>fi</tt> column is 123.
* <li><tt>{fs:'foobar'}</tt> - Return only rows where the <tt>fs</tt> column is 'foobar'.
@@ -95,7 +95,7 @@ import org.apache.juneau.internal.*;
* <li><tt>foo?</tt> - <tt>?</tt> matches exactly one character
* </ul>
*
- * <h6 class='topic'>Notes</h6>
+ * <h5 class='section'>Notes:</h5>
* <ul class='spaced-list'>
* <li>Whitespace is ignored around search patterns.
* <li>Prepend <tt>+</tt> to tokens that must match. (e.g. <tt>+foo* +*bar</tt>)
@@ -118,7 +118,7 @@ import org.apache.juneau.internal.*;
* <li><tt>!123</tt> - Not 123
* </ul>
*
- * <h6 class='topic'>Notes</h6>
+ * <h5 class='section'>Notes:</h5>
* <ul class='spaced-list'>
* <li>Whitespace is ignored in search patterns.
* <li>Negative numbers are supported.
@@ -149,7 +149,7 @@ import org.apache.juneau.internal.*;
* <li><tt>2001 2003 2005</tt> - Multiple date patterns are ORed.
* </ul>
*
- * <h6 class='topic'>Notes</h6>
+ * <h5 class='section'>Notes:</h5>
* <ul>
* <li>Whitespace is ignored in search patterns.
* </ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/utils/PojoRest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/PojoRest.java b/juneau-core/src/main/java/org/apache/juneau/utils/PojoRest.java
index 6f690cf..851bc9b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/PojoRest.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/PojoRest.java
@@ -42,7 +42,7 @@ import org.apache.juneau.parser.*;
* <p>
* Leading slashes in URLs are ignored. So <js>"/xxx/yyy/zzz"</js> and <js>"xxx/yyy/zzz"</js> are considered identical.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct an unstructured POJO model</jc>
* ObjectMap m = <jk>new</jk> ObjectMap(<js>""</js>
@@ -106,7 +106,7 @@ import org.apache.juneau.parser.*;
* can be used in lieu of index numbers on GET requests to return a map/bean with a specified attribute value.<br>
* The syntax is {@code @attr=val}, where attr is the attribute name on the child map, and val is the matching value.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Get map/bean with name attribute value of 'foo' from a list of items</jc>
* Map m = pojoRest.getMap(<js>"/items/@name=foo"</js>);
@@ -528,21 +528,24 @@ public final class PojoRest {
/**
* Adds a value to a list element in a POJO model.
* <p>
- * The URL is the address of the list being added to.
+ * The URL is the address of the list being added to.
* <p>
- * If the list does not already exist, it will be created.
+ * If the list does not already exist, it will be created.
* <p>
- * This method expands the POJO model as necessary to create the new element.
+ * This method expands the POJO model as necessary to create the new element.
* <p>
- * Note: You can only post to three types of nodes:
- * <ul class='spaced-list'>
- * <li>{@link List Lists}
- * <li>{@link Map Maps} containing integers as keys (i.e sparse arrays)
- * <li>arrays
- * </ul>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>You can only post to three types of nodes:
+ * <ul class='spaced-list'>
+ * <li>{@link List Lists}
+ * <li>{@link Map Maps} containing integers as keys (i.e sparse arrays)
+ * <li>arrays
+ * </ul>
+ * </ul>
*
* @param url The URL of the element being added to.
- * If null or blank, the root itself (assuming it's one of the types specified above) is added to.
+ * <br>If <jk>null</jk> or blank, the root itself (assuming it's one of the types specified above) is added to.
* @param val The value being added.
* @return The URL of the element that was added.
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/utils/PojoRestException.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/PojoRestException.java b/juneau-core/src/main/java/org/apache/juneau/utils/PojoRestException.java
index 2dc190c..ad74cef 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/PojoRestException.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/PojoRestException.java
@@ -38,7 +38,7 @@ public final class PojoRestException extends RuntimeException {
*
* @param status The HTTP-equivalent status code.
* @param message The detailed message.
- * @param args Optional message arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public PojoRestException(int status, String message, Object...args) {
super(args.length == 0 ? message : MessageFormat.format(message, args));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/utils/ProcBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/ProcBuilder.java b/juneau-core/src/main/java/org/apache/juneau/utils/ProcBuilder.java
index 6b253e2..376317b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/ProcBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/ProcBuilder.java
@@ -71,7 +71,7 @@ public class ProcBuilder {
* Command arguments if the specified matcher matches.
* Can be used for specifying os-specific commands.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* ProcessBuilder pb = ProcessBuilder
* .create()
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java
index eb58b7c..501de0f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java
@@ -20,13 +20,13 @@ import org.apache.juneau.serializer.*;
/**
* Serializes POJOs to HTTP responses as XML.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/xml</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/xml</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Same as {@link XmlSerializer}, except prepends <code><xt><?xml</xt> <xa>version</xa>=<xs>'1.0'</xs> <xa>encoding</xa>=<xs>'UTF-8'</xs><xt>?></xt></code> to the response
* to make it a valid XML document.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
index 29dea9f..0e04e3f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -31,15 +31,15 @@ import org.apache.juneau.xml.annotation.*;
/**
* Parses text generated by the {@link XmlSerializer} class back into a POJO model.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Content-Type</code> types: <code>text/xml</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* See the {@link XmlSerializer} class for a description of Juneau-generated XML.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -510,7 +510,6 @@ public class XmlParser extends ReaderParser {
@Override /* Parser */
protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
XmlParserSession s = (XmlParserSession)session;
- type = session.normalizeClassMeta(type);
return parseAnything(s, type, null, s.getXmlStreamReader(), s.getOuter(), true, null);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
index 765fbd6..a5b6802 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParserContext.java
@@ -84,11 +84,11 @@ import org.apache.juneau.parser.*;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../parser/ParserContext.html#ConfigProperties'>ParserContext</a> - Configurable properties common to all parsers.
+ * <li class='c'><a class="doclink" href="../parser/ParserContext.html#ConfigProperties">ParserContext</a> - Configurable properties common to all parsers.
* </ul>
* </ul>
*/
@@ -135,7 +135,10 @@ public class XmlParserContext extends ParserContext {
* <p>
* Associates an {@link XMLReporter} with this parser.
* <p>
- * Note: Reporters are not copied to new parsers during a clone.
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>Reporters are not copied to new parsers during a clone.
+ * </ul>
*/
public static final String XML_reporter = "XmlParser.reporter";
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaDocSerializer.java
index 95a8024..195abf1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaDocSerializer.java
@@ -18,13 +18,13 @@ import org.apache.juneau.serializer.*;
/**
* Serializes POJO metadata to HTTP responses as XML.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/xml+schema</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/xml</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Same as {@link XmlSchemaSerializer}, except prepends <code><xt><?xml</xt> <xa>version</xa>=<xs>'1.0'</xs> <xa>encoding</xa>=<xs>'UTF-8'</xs><xt>?></xt></code> to the response
* to make it a valid XML document.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
index 35effd0..01d8138 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
@@ -35,17 +35,17 @@ import org.w3c.dom.ls.*;
/**
* Serializes POJO metadata to HTTP responses as XML.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/xml+schema</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/xml</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Produces the XML-schema representation of the XML produced by the {@link XmlSerializer} class with the same properties.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index e8e0bbf..3a86e00 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -31,13 +31,13 @@ import org.apache.juneau.xml.annotation.*;
/**
* Serializes POJO models to XML.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/xml</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/xml</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* See the {@link JsonSerializer} class for details on how Java models map to JSON.
* <p>
@@ -105,7 +105,7 @@ import org.apache.juneau.xml.annotation.*;
* <p>
* If an attribute name contains any non-valid XML element characters, they will be escaped using standard {@code _x####_} notation.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
index d1d51df..215a5e1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializerContext.java
@@ -81,11 +81,11 @@ import org.apache.juneau.serializer.*;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* </ul>
* </ul>
*/
@@ -127,10 +127,12 @@ public class XmlSerializerContext extends SerializerContext {
* <p>
* This setting is ignored if {@link #XML_enableNamespaces} is not enabled.
* <p>
- * <b>IMPORTANT NOTE:</b>
- * Auto-detection of namespaces can be costly performance-wise.
- * In high-performance environments, it's recommended that namespace detection be
- * disabled, and that namespaces be manually defined through the {@link #XML_namespaces} property.
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>Auto-detection of namespaces can be costly performance-wise.
+ * In high-performance environments, it's recommended that namespace detection be
+ * disabled, and that namespaces be manually defined through the {@link #XML_namespaces} property.
+ * </ul>
*/
public static final String XML_autoDetectNamespaces = "XmlSerializer.autoDetectNamespaces";
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
index 281e664..1140561 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlWriter.java
@@ -20,7 +20,10 @@ import org.apache.juneau.xml.annotation.*;
/**
* Specialized writer for serializing XML.
* <p>
- * <b>Note: This class is not intended for external use.</b>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This class is not intended for external use.
+ * </ul>
*/
public class XmlWriter extends SerializerWriter {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/annotation/Xml.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/annotation/Xml.java b/juneau-core/src/main/java/org/apache/juneau/xml/annotation/Xml.java
index e901f58..5d53451 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/annotation/Xml.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/annotation/Xml.java
@@ -40,7 +40,7 @@ public @interface Xml {
* <p>
* Applies only to collection and array bean properties.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> MyBean {
* <ja>@Xml</ja>(childName=<js>"child"</js>}
@@ -98,7 +98,7 @@ public @interface Xml {
/**
* The {@link XmlFormat} to use for serializing this object type.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> MyBean {
*
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/xml/annotation/XmlSchema.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/annotation/XmlSchema.java b/juneau-core/src/main/java/org/apache/juneau/xml/annotation/XmlSchema.java
index adf06e5..1bd5945 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/annotation/XmlSchema.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/annotation/XmlSchema.java
@@ -52,7 +52,7 @@ public @interface XmlSchema {
* <p>
* Inherited by child packages.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* Contents of <code>package-info.java</code>...
* </p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/javadoc/javadoc.css
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/javadoc/javadoc.css b/juneau-core/src/main/javadoc/javadoc.css
index 66d7637..dc99fdb 100755
--- a/juneau-core/src/main/javadoc/javadoc.css
+++ b/juneau-core/src/main/javadoc/javadoc.css
@@ -673,3 +673,8 @@ h1.hidden {
font-weight: bold;
}
+h5.section, h6.section {
+ color: #4e4e4e;
+ margin: 10px 0 5px 0;
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/javadoc/overview.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/javadoc/overview.html b/juneau-core/src/main/javadoc/overview.html
index f55c6a2..ce52a4e 100644
--- a/juneau-core/src/main/javadoc/overview.html
+++ b/juneau-core/src/main/javadoc/overview.html
@@ -388,12 +388,16 @@
<jc>// Parse a JSON object as a HashMap<String,Person>.</jc>
json = <js>"{a:{name:'John Smith',age:21},b:{name:'Joe Smith',age:42}}"</js>;
- Map<String,Person> m4 = parser.parseMap(json, HashMap.<jk>class</jk>, String.<jk>class</jk>, Person.<jk>class</jk>)
+ Map<String,Person> m4 = parser.parse(json, HashMap.<jk>class</jk>, String.<jk>class</jk>, Person.<jk>class</jk>)
+
+ <jc>// Parse a JSON object as a HashMap<String,LinkedList<Person>>.</jc>
+ json = <js>"{a:[{name:'John Smith',age:21},{name:'Joe Smith',age:42}]}"</js>;
+ Map<String,List<Person>> m5 = parser.parse(json, HashMap.<jk>class</jk>, String.<jk>class</jk>, LinkedList.<jk>class</jk>, Person.<jk>class</jk>)
<jc>// Parse a JSON array of integers as a Collection of Integers or int[] array.</jc>
json = <js>"[1,2,3]"</js>;
- List<Integer> l5 = parser.parseCollection(json, LinkedList.<jk>class</jk>, Integer.<jk>class</jk>);
- <jk>int</jk>[] i6 = parser.parse(json, <jk>int</jk>[].<jk>class</jk>);
+ List<Integer> l6 = parser.parse(json, LinkedList.<jk>class</jk>, Integer.<jk>class</jk>);
+ <jk>int</jk>[] i7 = parser.parse(json, <jk>int</jk>[].<jk>class</jk>);
</p>
<p>
The parsers can also be used to populating existing bean and collection objects:
@@ -5330,7 +5334,7 @@
<h5 class='toc'>What's new in each release</h5>
<ul class='toc'>
- <li><p><a class='doclink' href='#6.0.2'>6.0.2 (TBD)</a></p>
+ <li><p><a class='doclink' href='#6.1.0'>6.1.0 (TBD)</a></p>
<li><p><a class='doclink' href='#6.0.1'>6.0.1 (Jan 3, 2017)</a></p>
<li><p><a class='doclink' href='#6.0.0'>6.0.0 (Oct 3, 2016)</a></p>
<li><p><a class='doclink' href='#5.2.0.1'>5.2.0.1 (Mar 23, 2016)</a></p>
@@ -5397,12 +5401,11 @@
<!-- ======================================================================================================== -->
- <a id="6.0.2"></a>
- <h3 class='topic' onclick='toggle(this)'>6.0.2 (TBD)</h3>
+ <a id="6.1.0"></a>
+ <h3 class='topic' onclick='toggle(this)'>6.1.0 (TBD)</h3>
<div class='topic'>
<p>
- Juneau 6.0.2 is a moderate update that provides localized serialization and parsing.
- For example, dates can now be serialized to and parsed from locale-targeted formats.
+ Juneau 6.1.0 is a major update.
</p>
<p>
In particular, this release cleans up the {@link org.apache.juneau.BeanContext} API to match
@@ -5461,6 +5464,18 @@
<li>{@link org.apache.juneau.BeanContext#BEAN_timeZone} - Specifies a default timezone at the context level.
<li>{@link org.apache.juneau.BeanContext#BEAN_mediaType} - Specifies a default media type at the context level.
</ul>
+ <li>Improvements to Parser class:
+ <ul>
+ <li>Simplified the parse methods (e.g. <code>parseMap()</code>, <code>parseCollection()</code>)
+ by replacing them with two simple methods:
+ <ul>
+ <li>{@link org.apache.juneau.parser.Parser#parse(Object,Class)} - Normal method.
+ <li>{@link org.apache.juneau.parser.Parser#parse(Object,Type,Type...)} - Method for parsing into parameterized maps and collections.
+ </ul>
+ <li>Arbitrarily-complex parameterized maps and collections can now be parsed without the need for creating intermediate <code>ClassMeta</code> objects.
+ <li>No need for casting anymore if you were using the old <code>parseMap()</code> and <code>parseCollection()</code> methods!
+ <li>Changes allow me to eliminate <code>BeanContext.normalizeClassMeta()</code> method.
+ </ul>
<li>Simplified {@link org.apache.juneau.transform.PojoSwap} class. Now just two methods:
<ul>
<li>{@link org.apache.juneau.transform.PojoSwap#swap(BeanSession,Object)}
@@ -5521,7 +5536,7 @@
</ul>
<li>New {@link org.apache.juneau.transform.MapSwap} and {@link org.apache.juneau.transform.StringSwap} classes.
<li>New {@link org.apache.juneau.serializer.WriterSerializer#println(Object)} method. Useful for debugging purposes.
- <li>New {@link org.apache.juneau.BeanContext#getClassMeta(Object[])} and {@link org.apache.juneau.BeanSession#getClassMeta(Object[])}
+ <li>New {@link org.apache.juneau.BeanContext#getClassMeta(Type,Type...)} and {@link org.apache.juneau.BeanSession#getClassMeta(Type,Type...)}
methods for retrieving Map and Collection class metas.
Replaces the various <code>getMapClassMeta()</code>/<code>getCollectionClassMeta()</code> methods.
<li>New section added to this document: <a class='doclink' href='#DTOs'>Juneau Data Transfer Objects (org.apache.juneau.dto)</a>
@@ -5531,6 +5546,28 @@
<ul class='spaced-list'>
<li>{@link org.apache.juneau.rest.RestRequest} now passes locale and timezone to serializers/parsers/transforms.
<li>New {@link org.apache.juneau.rest.RestRequest#getTimeZone()} method.
+ <li>Standardized the following methods in {@link org.apache.juneau.rest.RestRequest} to remove dependency on <code>ClassMeta</code>
+ objects and eliminate the need for casts:
+ <ul>
+ <li>{@link org.apache.juneau.rest.RestRequest#getHeader(String,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getHeader(String,Object,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getHeader(String,Type,Type...)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Object,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Type,Type...)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Object,Type,Type...)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getQueryParameters(String,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getQueryParameters(String,Type,Type...)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameter(String,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameter(String,Object,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameters(String,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameter(String,Type,Type...)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameters(String,Type,Type...)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getPathParameter(String,Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getPathParameter(String,Type,Type...)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getBody(Class)}
+ <li>{@link org.apache.juneau.rest.RestRequest#getBody(Type,Type...)}
+ </ul>
</ul>
</div>
@@ -6572,10 +6609,26 @@
<h6 class='topic'>Client</h6>
<ul class='spaced-list'>
- <li>New convenience methods in {@link org.apache.juneau.rest.client.RestCall}:
+ <li>New methods in {@link org.apache.juneau.rest.client.RestCall}:
<ol>
- <li>{@link org.apache.juneau.rest.client.RestCall#getResponseMap(Class,Class,Class)}
- <li>{@link org.apache.juneau.rest.client.RestCall#getResponseCollection(Class,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getHeader(String,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getHeader(String,Object,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getHeader(String,Type,Type...)}
+<li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Object,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Type,Type...)}
+<li>{@link org.apache.juneau.rest.RestRequest#getQueryParameter(String,Object,Type,Type...)}
+<li>{@link org.apache.juneau.rest.RestRequest#getQueryParameters(String,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getQueryParameters(String,Type,Type...)}
+<li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameter(String,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameter(String,Object,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameters(String,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameter(String,Type,Type...)}
+<li>{@link org.apache.juneau.rest.RestRequest#getFormDataParameters(String,Type,Type...)}
+<li>{@link org.apache.juneau.rest.RestRequest#getPathParameter(String,Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getPathParameter(String,Type,Type...)}
+<li>{@link org.apache.juneau.rest.RestRequest#getBody(Class)}
+<li>{@link org.apache.juneau.rest.RestRequest#getBody(Type,Type...)}
</ol>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-examples-rest/juneau-examples-rest.launch
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/juneau-examples-rest.launch b/juneau-examples-rest/juneau-examples-rest.launch
new file mode 100644
index 0000000..129975b
--- /dev/null
+++ b/juneau-examples-rest/juneau-examples-rest.launch
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ ***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations under the License. *
+ ***************************************************************************************************************************
+-->
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<stringAttribute key="bad_container_name" value="/juneau-examples"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.debug.ui.CONSIDER_INHERITED_MAIN" value="true"/>
+<booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS" value="true"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.juneau.microservice.RestMicroservice"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="examples.cfg"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="juneau-examples-rest"/>
+</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
index c523cbf..c056a09 100644
--- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
+++ b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/MethodExampleResource.java
@@ -71,7 +71,7 @@ public class MethodExampleResource extends Resource {
UUID a3 = req.getPathParameter("a3", UUID.class);
// Optional GET parameters
- int p1 = req.getQueryParameter("p1", int.class, 0);
+ int p1 = req.getQueryParameter("p1", 0, int.class);
String p2 = req.getQueryParameter("p2", String.class);
UUID p3 = req.getQueryParameter("p3", UUID.class);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
----------------------------------------------------------------------
diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
index 6efd127..e604231 100755
--- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
+++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
@@ -220,7 +220,7 @@ public abstract class Microservice {
* <p>
* Subclasses can override this method to provide their own variables.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jd>/**
* * Augment default var resolver with a custom $B{...} variable that simply wraps strings inside square brackets.
@@ -289,7 +289,7 @@ public abstract class Microservice {
* <p>
* This method can be called from the class constructor.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <cc>#--------------------------</cc>
* <cc># My section</cc>
@@ -367,7 +367,7 @@ public abstract class Microservice {
* <p>
* This method can be called from the class constructor.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Get Main-Class from manifest file.</jc>
* String mainClass = Microservice.<jsm>getManifest</jsm>().getString(<js>"Main-Class"</js>, <js>"unknown"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
----------------------------------------------------------------------
diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
index 839f606..a86eb4c 100755
--- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
+++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
@@ -85,7 +85,7 @@ public class RestMicroservice extends Microservice {
/**
* Constructor.
*
- * @param args The command line arguments.
+ * @param args Command line arguments.
* @throws Exception
*/
public RestMicroservice(String...args) throws Exception {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/AllowAllRedirects.java
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/AllowAllRedirects.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/AllowAllRedirects.java
index 619bfca..044e3b1 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/AllowAllRedirects.java
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/AllowAllRedirects.java
@@ -17,8 +17,11 @@ import org.apache.http.impl.client.*;
/**
* Redirect strategy that allows for redirects on any request type, not just <code>GET</code> or <code>HEAD</code>.
* <p>
- * Note: This class is similar to <code>org.apache.http.impl.client.LaxRedirectStrategy</code>
- * in Apache HttpClient 4.2, but also allows for redirects on <code>PUTs</code> and <code>DELETEs</code>.
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This class is similar to <code>org.apache.http.impl.client.LaxRedirectStrategy</code>
+ * in Apache HttpClient 4.2, but also allows for redirects on <code>PUTs</code> and <code>DELETEs</code>.
+ * </ul>
*/
public class AllowAllRedirects extends DefaultRedirectStrategy {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
index da6393a..ee97ac1 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
@@ -21,7 +21,7 @@ import org.apache.http.client.entity.*;
* Convenience class for constructing instances of <code>List<NameValuePair></code>
* for the {@link UrlEncodedFormEntity} class.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* NameValuePairs params = <jk>new</jk> NameValuePairs()
* .append(<jk>new</jk> BasicNameValuePair(<js>"j_username"</js>, user))
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponsePattern.java
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponsePattern.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponsePattern.java
index 7398bd1..b56797f 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponsePattern.java
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponsePattern.java
@@ -20,7 +20,7 @@ import java.util.regex.*;
* <p>
* Response patterns are applied to REST calls through the {@link RestCall#addResponsePattern(ResponsePattern)} method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* This example shows how to use a response pattern finder to find and capture patterns for <js>"x=number"</js> and <js>"y=string"</js>
* from a response body.
* <p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
index b49c59a..5fbf663 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
@@ -13,6 +13,7 @@
package org.apache.juneau.rest.client;
import java.io.*;
+import java.lang.reflect.*;
import java.net.*;
import java.util.*;
import java.util.logging.*;
@@ -47,9 +48,9 @@ import org.apache.juneau.utils.*;
* <p>
* The actual connection and request/response transaction occurs when calling one of the <code>getResponseXXX()</code> methods.
*
- * <h6 class='topic'>Additional Information</h6>
+ * <h5 class='section'>Additional information:</h5>
* <ul>
- * <li><a class='doclink' href='package-summary.html#RestClient'>org.apache.juneau.rest.client > REST client API</a> for more information and code examples.
+ * <li><a class="doclink" href="package-summary.html#RestClient">org.apache.juneau.rest.client > REST client API</a> for more information and code examples.
* </ul>
*/
public final class RestCall {
@@ -339,7 +340,7 @@ public final class RestCall {
* This method uses {@link #getCapturedResponse()} to read the response text and so does not affect the other output
* methods such as {@link #getResponseAsString()}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Throw a RestCallException if FAILURE or ERROR is found in the output.</jc>
* restClient.doGet(<jsf>URL</jsf>)
@@ -370,7 +371,7 @@ public final class RestCall {
* This method uses {@link #getCapturedResponse()} to read the response text and so does not affect the other output
* methods such as {@link #getResponseAsString()}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Throw a RestCallException if SUCCESS is not found in the output.</jc>
* restClient.doGet(<jsf>URL</jsf>)
@@ -446,7 +447,7 @@ public final class RestCall {
* The response entity is discarded unless one of the pipe methods have been specified to pipe the
* output to an output stream or writer.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>try</jk> {
* RestClient client = <jk>new</jk> RestClient();
@@ -745,6 +746,38 @@ public final class RestCall {
}
/**
+ * Same as {@link #getResponse(Class)}, but useful for parsing into maps and collections of specific types.
+ *
+ * @param type The class to resolve.
+ * Can be any of the following:
+ * <ul>
+ * <li>{@link ClassMeta}
+ * <li>{@link Class}
+ * <li>{@link ParameterizedType}
+ * <li>{@link GenericArrayType}
+ * </ul>
+ * @param args The type arguments of the class if it's a collection or map.
+ * Can be any of the following:
+ * <ul>
+ * <li>{@link ClassMeta}
+ * <li>{@link Class}
+ * <li>{@link ParameterizedType}
+ * <li>{@link GenericArrayType}
+ * </ul>
+ * @param <T> The class to convert the input to.
+ * @return The parsed output.
+ * @throws IOException If a connection error occurred.
+ * @throws ParseException If the input contains a syntax error or is malformed for the <code>Content-Type</code> header.
+ */
+ @SuppressWarnings("unchecked")
+ public <T> T getResponse(Type type, Type...args) throws IOException, ParseException {
+ BeanContext bc = getParser().getBeanContext();
+ if (bc == null)
+ bc = BeanContext.DEFAULT;
+ return (T)getResponse(bc.getClassMeta(type, args));
+ }
+
+ /**
* Parses the output from the connection into the specified type and then wraps that in a {@link PojoRest}.
* <p>
* Useful if you want to quickly retrieve a single value from inside of a larger JSON document.
@@ -771,61 +804,6 @@ public final class RestCall {
return getResponsePojoRest(ObjectMap.class);
}
- /**
- * Convenience method when you want to parse into a Map<K,V> object.
- *
- * <h6 class='topic'>Example:</h6>
- * <p class='bcode'>
- * Map<String,MyBean> m = client.doGet(url).getResponseMap(LinkedHashMap.<jk>class</jk>, String.<jk>class</jk>, MyBean.<jk>class</jk>);
- * </p>
- * <p>
- * A simpler approach is often to just extend the map class you want and just use the normal {@link #getResponse(Class)} method:
- * </p>
- * <p class='bcode'>
- * <jk>public static class</jk> MyMap <jk>extends</jk> LinkedHashMap<String,MyBean> {}
- *
- * Map<String,MyBean> m = client.doGet(url).getResponse(MyMap.<jk>class</jk>);
- * </p>
- *
- * @param mapClass The map class to use (e.g. <code>TreeMap</code>)
- * @param keyClass The class type of the keys (e.g. <code>String</code>)
- * @param valueClass The class type of the values (e.g. <code>MyBean</code>)
- * @return The response parsed as a map.
- * @throws ParseException
- * @throws IOException
- */
- public final <K,V,T extends Map<K,V>> T getResponseMap(Class<T> mapClass, Class<K> keyClass, Class<V> valueClass) throws ParseException, IOException {
- ClassMeta<T> cm = getBeanContext().getClassMeta(mapClass, keyClass, valueClass);
- return getResponse(cm);
- }
-
- /**
- * Convenience method when you want to parse into a Collection<E> object.
- *
- * <h6 class='topic'>Example:</h6>
- * <p class='bcode'>
- * List<MyBean> l = client.doGet(url).getResponseCollection(LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>);
- * </p>
- * <p>
- * A simpler approach is often to just extend the collection class you want and just use the normal {@link #getResponse(Class)} method:
- * </p>
- * <p class='bcode'>
- * <jk>public static class</jk> MyList <jk>extends</jk> LinkedList<MyBean> {}
- *
- * List<MyBean> l = client.doGet(url).getResponse(MyList.<jk>class</jk>);
- * </p>
- *
- * @param collectionClass The collection class to use (e.g. <code>LinkedList</code>)
- * @param entryClass The class type of the values (e.g. <code>MyBean</code>)
- * @return The response parsed as a collection.
- * @throws ParseException
- * @throws IOException
- */
- public final <E,T extends Collection<E>> T getResponseCollection(Class<T> collectionClass, Class<E> entryClass) throws ParseException, IOException {
- ClassMeta<T> cm = getBeanContext().getClassMeta(collectionClass, entryClass);
- return getResponse(cm);
- }
-
<T> T getResponse(ClassMeta<T> type) throws IOException, ParseException {
try {
Parser p = getParser();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index a088461..54ee36d 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -63,9 +63,9 @@ import org.apache.juneau.urlencoding.*;
* <li>API for interacting with remoteable services.
* </ul>
*
- * <h6 class='topic'>Additional Information</h6>
+ * <h5 class='section'>Additional information:</h5>
* <ul>
- * <li><a class='doclink' href='package-summary.html#RestClient'>org.apache.juneau.rest.client > REST client API</a> for more information and code examples.
+ * <li><a class="doclink" href="package-summary.html#RestClient">org.apache.juneau.rest.client > REST client API</a> for more information and code examples.
* </ul>
*/
public class RestClient extends CoreApi {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
index 51de853..17a7dde 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/SerializedNameValuePair.java
@@ -24,7 +24,7 @@ import org.apache.juneau.urlencoding.*;
* Subclass of {@link NameValuePair} for serializing POJOs as URL-encoded form post entries
* using the {@link UrlEncodingSerializer class}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* NameValuePairs params = <jk>new</jk> NameValuePairs()
* .append(<jk>new</jk> SerializedNameValuePair(<js>"myPojo"</js>, pojo, UrlEncodingSerializer.<jsf>DEFAULT_SIMPLE</jsf>))
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
----------------------------------------------------------------------
diff --git a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
index bc2242f..1a26708 100644
--- a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
+++ b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
@@ -132,8 +132,6 @@ public class BaseProvider implements MessageBodyReader<Object>, MessageBodyWrite
if (pm == null)
throw new WebApplicationException(SC_UNSUPPORTED_MEDIA_TYPE);
Parser p = pm.getParser();
- BeanContext bc = p.getBeanContext();
- ClassMeta<?> cm = bc.getClassMeta(gType);
ObjectMap mp = getMethodProperties(a);
mp.put("mediaType", mediaType.toString());
Locale locale = getLocale(headers);
@@ -142,11 +140,11 @@ public class BaseProvider implements MessageBodyReader<Object>, MessageBodyWrite
ReaderParser p2 = (ReaderParser)p;
InputStreamReader r = new InputStreamReader(in, IOUtils.UTF8);
ParserSession session = p2.createSession(r, mp, null, null, locale, timeZone, pm.getMediaType());
- return p2.parse(session, cm);
+ return p2.parseSession(session, p.getBeanContext().getClassMeta(gType));
}
InputStreamParser p2 = (InputStreamParser)p;
ParserSession session = p2.createSession(in, mp, null, null, locale, timeZone, pm.getMediaType());
- return p2.parse(session, cm);
+ return p2.parseSession(session, p.getBeanContext().getClassMeta(gType));
} catch (ParseException e) {
throw new IOException(e);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
----------------------------------------------------------------------
diff --git a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
index b0e54c0..bbca603 100644
--- a/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
+++ b/juneau-rest-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/JuneauProvider.java
@@ -29,7 +29,7 @@ import org.apache.juneau.xml.*;
/**
* Annotations applicable to subclasses of {@link BaseProvider}.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Used to associate serializers, parsers, filters, and properties with instances of {@link BaseProvider}.
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/Redirect.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/Redirect.java b/juneau-rest/src/main/java/org/apache/juneau/rest/Redirect.java
index ab3923f..962e432 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/Redirect.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/Redirect.java
@@ -75,7 +75,7 @@ public final class Redirect {
* Relative paths are interpreted as relative to the servlet path.
*
* @param url The URL to redirect to.
- * @param args Optional {@link MessageFormat} arguments to replace in the URL string.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public Redirect(CharSequence url, Object...args) {
this.url = (url == null ? null : url.toString());
@@ -98,7 +98,7 @@ public final class Redirect {
*
* @param httpResponseCode The HTTP response code.
* @param url The URL to redirect to.
- * @param args Optional {@link MessageFormat} arguments to replace in the URL string.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public Redirect(int httpResponseCode, CharSequence url, Object...args) {
this.httpResponseCode = httpResponseCode;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestConverter.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestConverter.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestConverter.java
index 9c3e378..cc401ec 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestConverter.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestConverter.java
@@ -24,7 +24,7 @@ import org.apache.juneau.serializer.*;
* converted to some other POJO after invocation of the REST method.
* <p>
* Converters are associated with REST methods through the {@link RestMethod#converters()} annotation.
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> RequestEchoResource <jk>extends</jk> RestServlet {
*
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestException.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestException.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestException.java
index 2f510bb..4ad7fd1 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestException.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestException.java
@@ -33,7 +33,7 @@ public class RestException extends RuntimeException {
*
* @param status The HTTP status code.
* @param msg The status message.
- * @param args Optional string format arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public RestException(int status, String msg, Object...args) {
super(args.length == 0 ? msg : MessageFormat.format(msg, args));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestGuard.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestGuard.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestGuard.java
index 82db0ca..6b406ca 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestGuard.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestGuard.java
@@ -19,7 +19,7 @@ import org.apache.juneau.rest.annotation.*;
/**
* REST method guard.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Implements a guard mechanism for REST method calls that allows requests to be
* rejected before invocation of the REST method.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/RestMatcher.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestMatcher.java b/juneau-rest/src/main/java/org/apache/juneau/rest/RestMatcher.java
index 84a14f3..236545f 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestMatcher.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestMatcher.java
@@ -30,7 +30,7 @@ import org.apache.juneau.rest.annotation.*;
* This is opposite from the {@link RestMethod#guards()} annotation, where all guards
* are required to match in order to execute the method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
*
[2/7] incubator-juneau git commit: Eliminate ClassMeta dependencies
from Parser. Clean up docs.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
index 10fdcb7..0d60f43 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/HasQuery.java
@@ -28,7 +28,7 @@ import org.apache.juneau.rest.*;
* Therefore, this annotation can be used in conjunction with the {@link Body @Body} annotation
* or {@link RestRequest#getBody(Class)} method for <code>application/x-www-form-urlencoded POST</code> calls.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>)
* <jk>public void</jk> doPost(<ja>@HasQuery</ja>(<js>"p1"</js>) <jk>boolean</jk> p1, <ja>@Body</ja> Bean myBean) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
index 6cdbbf0..bc4cdb5 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Header.java
@@ -21,7 +21,7 @@ import java.lang.annotation.*;
* Annotation that can be applied to a parameter of a {@link RestMethod} annotated method
* to identify it as a HTTP request header converted to a POJO.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>)
* <jk>public void</jk> doGet(RestRequest req, RestResponse res, <ja>@Header</ja>(<js>"ETag"</js>) UUID etag) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Messages.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Messages.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Messages.java
index 5e1bb2a..ae396a3 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Messages.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Messages.java
@@ -26,7 +26,7 @@ import org.apache.juneau.utils.*;
* <p>
* Parameter type must be either {@link ResourceBundle} or {@link MessageBundle}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>)
* <jk>public</jk> String doGet(<ja>@Messages</ja> ResourceBundle messages) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Method.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Method.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Method.java
index a1e2495..fbdbe66 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Method.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Method.java
@@ -23,7 +23,7 @@ import java.lang.annotation.*;
* <p>
* Typically used for HTTP method handlers of type <js>"*"</js> (i.e. handle all requests).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"*"</js>)
* <jk>public void</jk> doAnything(RestRequest req, RestResponse res, <ja>@Method</ja> String method) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Parameter.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Parameter.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Parameter.java
index 77a9c23..668638a 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Parameter.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Parameter.java
@@ -21,7 +21,7 @@ import java.lang.annotation.*;
* Annotation used in conjunction with {@link RestMethod#parameters()} to identify content and header descriptions
* on specific method requests.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(
* name=<js>"*"</js>,
@@ -58,8 +58,9 @@ public @interface Parameter {
* The name of the parameter (e.g. <js>"Content-Range"</js>).
* <p>
* Parameter names are case sensitive.
- * If <code>in</code> is <js>"path"</js>, the name field MUST correspond to the associated path segment from the <code>path</code> field in the <a href='http://swagger.io/specification/#pathsObject'>Paths Object</a>.
- * See <a href='http://swagger.io/specification/#pathTemplating'>Path Templating</a> for further information.
+ * If <code>in</code> is <js>"path"</js>, the name field MUST correspond to the associated path segment from the <code>path</code> field in
+ * the <a class="doclink" href="http://swagger.io/specification/#pathsObject">Paths Object</a>.
+ * See <a class="doclink" href="http://swagger.io/specification/#pathTemplating">Path Templating</a> for further information.
* For all other cases, the name corresponds to the parameter name used based on the <code>in</code> property.
*/
String name() default "";
@@ -69,7 +70,7 @@ public @interface Parameter {
* <p>
* A brief description of the parameter.
* This could contain examples of use.
- * <a href='https://help.github.com/articles/github-flavored-markdown'>GFM syntax</a> can be used for rich text representation.
+ * <a class="doclink" href="https://help.github.com/articles/github-flavored-markdown">GFM syntax</a> can be used for rich text representation.
* <p>
* The default value pulls the description from the <code>description</code> entry in the servlet resource bundle.
* (e.g. <js>"myMethod.res.[code].[category].[name] = foo"</js> or <js>"MyServlet.myMethod.res.[code].[category].[name] = foo"</js>).
@@ -89,9 +90,9 @@ public @interface Parameter {
* <p>
* Only applicable for <code>in</code> of type <js>"body"</js>.
* <p>
- * The schema is a JSON object specified <a href='http://swagger.io/specification/#schemaObject'>here</a>.
+ * The schema is a JSON object specified <a class="doclink" href="http://swagger.io/specification/#schemaObject">here</a>.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(
* parameters={
@@ -117,7 +118,7 @@ public @interface Parameter {
/**
* The extending format for the previously mentioned <code>type</code>.
* <p>
- * See <a href='http://swagger.io/specification/#dataTypeFormat'>Data Type Formats</a> for further details.
+ * See <a class="doclink" href="http://swagger.io/specification/#dataTypeFormat">Data Type Formats</a> for further details.
*/
String format() default "";
@@ -134,7 +135,7 @@ public @interface Parameter {
* <p>
* Describes the type of items in the array.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(
* parameters={
@@ -148,7 +149,7 @@ public @interface Parameter {
* <jk>public void</jk> doAnything() {
* </p>
* <p>
- * See <a href='http://swagger.io/specification/#itemsObject'>Items Object</a> for further details.
+ * See <a class="doclink" href="http://swagger.io/specification/#itemsObject">Items Object</a> for further details.
*/
String items() default "";
@@ -173,7 +174,7 @@ public @interface Parameter {
* <p>
* For example a "count" to control the number of results per page might default to 100 if not supplied by the client in the request.
* (Note: "default" has no meaning for required parameters.)
- * See <a href='http://json-schema.org/latest/json-schema-validation.html#anchor101'>http://json-schema.org/latest/json-schema-validation.html#anchor101</a>.
+ * See <a class="doclink" href="http://json-schema.org/latest/json-schema-validation.html#anchor101">http://json-schema.org/latest/json-schema-validation.html#anchor101</a>.
* Unlike JSON Schema this value MUST conform to the defined <code>type</code> for this parameter.
*/
String _default() default "";
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
index e64ccf3..1333656 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Path.java
@@ -21,7 +21,7 @@ import java.lang.annotation.*;
* Annotation that can be applied to a parameter of a {@link RestMethod} annotated method
* to identify it as a variable in a URL path pattern converted to a POJO.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/myurl/{foo}/{bar}/{baz}/*"</js>)
* <jk>public void</jk> doGet(RestRequest req, RestResponse res,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/PathRemainder.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/PathRemainder.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/PathRemainder.java
index 728fde0..ea93705 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/PathRemainder.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/PathRemainder.java
@@ -21,7 +21,7 @@ import java.lang.annotation.*;
* Annotation that can be applied to a parameter of a {@link RestMethod} annotated method
* to identify it as the URL parameter remainder after a path pattern match.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/foo/*"</js>)
* <jk>public void</jk> doGet(RestRequest req, RestResponse res, <ja>@PathRemainder</ja> String remainder) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Properties.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Properties.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Properties.java
index a70e908..4957c1d 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Properties.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Properties.java
@@ -23,7 +23,7 @@ import org.apache.juneau.*;
* Annotation that can be applied to a parameter of a {@link RestMethod} annotated method
* to identify the request-duration properties object for the current request.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>)
* <jk>public Person</jk> doGetPerson(<ja>@Properties</ja> ObjectMap properties) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
index a08113a..649b7cd 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Query.java
@@ -28,7 +28,7 @@ import org.apache.juneau.rest.*;
* Therefore, this annotation can be used in conjunction with the {@link Body @Body} annotation
* or {@link RestRequest#getBody(Class)} method for <code>application/x-www-form-urlencoded POST</code> calls.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>)
* <jk>public void</jk> doGet(RestRequest req, RestResponse res,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Response.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Response.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Response.java
index 6cc7860..3b72a74 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Response.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/Response.java
@@ -20,7 +20,7 @@ import java.lang.annotation.*;
/**
* Annotation used in conjunction with {@link RestMethod#responses()} to identify possible responses by the method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(
* name=<js>"*"</js>,
@@ -63,10 +63,10 @@ public @interface Response {
* <p>
* It can be a primitive, an array or an object.
* If this field does not exist, it means no content is returned as part of the response.
- * As an extension to the <a href='http://swagger.io/specification/#schemaObject'>Schema Object</a>, its root type value may also be <js>"file"</js>.
+ * As an extension to the <a class="doclink" href="http://swagger.io/specification/#schemaObject">Schema Object</a>, its root type value may also be <js>"file"</js>.
* This SHOULD be accompanied by a relevant produces mime-type.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(
* name=<js>"*"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
index 1dc75e9..530f563 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
@@ -255,7 +255,7 @@ public @interface RestMethod {
* <p>
* Header values specified at the method level override header values specified at the servlet level.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Assume "text/json" Accept value when Accept not specified</jc>
* <ja>@RestMethod</ja>(name=<js>"GET"</js>, path=<js>"/*"</js>, defaultRequestHeaders={<js>"Accept: text/json"</js>})
@@ -320,7 +320,7 @@ public @interface RestMethod {
* The default value pulls the description from the <code>(className.?)[javaMethodName].externalDocs</code> entry in the servlet resource bundle.
* (e.g. <js>"MyClass.myMethod.externalDocs = {url:'http://juneau.apache.org'}"</js> or <js>"myMethod.externalDocs = {url:'http://juneau.apache.org'}"</js>).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(externalDocs=<js>"{url:'http://juneau.apache.org'}"</js>)
* </p>
@@ -342,7 +342,7 @@ public @interface RestMethod {
* The default value pulls the description from the <code>(className.?)[javaMethodName].tags</code> entry in the servlet resource bundle.
* (e.g. <js>"MyClass.myMethod.tags = foo,bar"</js> or <js>"myMethod.tags = foo,bar"</js>).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(tags=<js>"foo,bar"</js>)
* </p>
@@ -361,7 +361,7 @@ public @interface RestMethod {
* The default value pulls the description from the <code>(className.?)[javaMethodName].deprecated</code> entry in the servlet resource bundle.
* (e.g. <js>"MyClass.myMethod.deprecated = true"</js> or <js>"myMethod.deprecated = foo,bar"</js>).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(deprecated=<jk>true</jk>)
* </p>
@@ -378,7 +378,7 @@ public @interface RestMethod {
* This annotation is provided for documentation purposes and is used to populate the method <js>"parameters"</js> column
* on the Swagger page.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(
* name=<js>"POST"</js>, path=<js>"/{a}"</js>,
@@ -415,7 +415,7 @@ public @interface RestMethod {
* This annotation is provided for documentation purposes and is used to populate the method <js>"responses"</js> column
* on the Swagger page.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestMethod</ja>(
* name=<js>"GET"</js>, path=<js>"/"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
index 1948ce0..f41bd53 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
@@ -177,7 +177,7 @@ public @interface RestResource {
* <p>
* This annotation can only be used on {@link Encoder} classes that have no-arg constructors.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Servlet with automated support for GZIP compression</jc>
* <ja>@RestResource</ja>(encoders={GzipEncoder.<jk>class</jk>})
@@ -200,7 +200,7 @@ public @interface RestResource {
* <p>
* Only one header value can be specified per entry (i.e. it's not a delimited list of header entries).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Assume "text/json" Accept value when Accept not specified</jc>
* <ja>@RestResource</ja>(defaultRequestHeaders={<js>"Accept: text/json"</js>})
@@ -222,7 +222,7 @@ public @interface RestResource {
* <p>
* Only one header value can be specified per entry (i.e. it's not a delimited list of header entries).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Add a version header attribute to all responses</jc>
* <ja>@RestResource</ja>(defaultResponseHeaders={<js>"X-Version: 1.0"</js>})
@@ -347,7 +347,7 @@ public @interface RestResource {
* The default value pulls the description from the <code>contact</code> entry in the servlet resource bundle.
* (e.g. <js>"contact = {name:'John Smith',email:'john.smith@foo.bar'}"</js> or <js>"MyServlet.contact = {name:'John Smith',email:'john.smith@foo.bar'}"</js>).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestResource</ja>(contact=<js>"{name:'John Smith',email:'john.smith@foo.bar'}"</js>)
* </p>
@@ -375,7 +375,7 @@ public @interface RestResource {
* The default value pulls the description from the <code>license</code> entry in the servlet resource bundle.
* (e.g. <js>"license = {name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"</js> or <js>"MyServlet.license = {name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"</js>).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestResource</ja>(license=<js>"{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"</js>)
* </p>
@@ -424,7 +424,7 @@ public @interface RestResource {
* The default value pulls the description from the <code>tags</code> entry in the servlet resource bundle.
* (e.g. <js>"tags = [{name:'Foo',description:'Foobar'}]"</js> or <js>"MyServlet.tags = [{name:'Foo',description:'Foobar'}]"</js>).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestResource</ja>(tags=<js>"[{name:'Foo',description:'Foobar'}]"</js>)
* </p>
@@ -452,7 +452,7 @@ public @interface RestResource {
* The default value pulls the description from the <code>externalDocs</code> entry in the servlet resource bundle.
* (e.g. <js>"externalDocs = {url:'http://juneau.apache.org'}"</js> or <js>"MyServlet.externalDocs = {url:'http://juneau.apache.org'}"</js>).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestResource</ja>(externalDocs=<js>"{url:'http://juneau.apache.org'}"</js>)
* </p>
@@ -495,7 +495,7 @@ public @interface RestResource {
* <p>
* If the file cannot be located, the request to <js>"[servletpath]/style.css"</js> will return {@link HttpServletResponse#SC_NOT_FOUND}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>package</jk> com.foo.mypackage;
*
@@ -525,7 +525,7 @@ public @interface RestResource {
* <p>
* If the file cannot be located, the request to <js>"[servletpath]/favicon.ico"</js> will return {@link HttpServletResponse#SC_NOT_FOUND}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>package</jk> com.foo.mypackage;
*
@@ -557,7 +557,7 @@ public @interface RestResource {
* <p>
* The media type on the response is determined by the {@link RestServlet#getMimetypesFileTypeMap()} method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>package</jk> com.foo.mypackage;
*
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/converters/Queryable.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/converters/Queryable.java b/juneau-rest/src/main/java/org/apache/juneau/rest/converters/Queryable.java
index 297097f..911b0b4 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/converters/Queryable.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/converters/Queryable.java
@@ -71,18 +71,15 @@ public final class Queryable implements RestConverter {
if (o instanceof Collection || o.getClass().isArray()) {
ObjectMap query = req.getQueryParameter("q", ObjectMap.class);
- ClassMeta<List<String>> cm1 = session.getCollectionClassMeta(List.class, String.class);
- List<String> view = req.getQueryParameter("v", cm1);
- ClassMeta<List<Object>> cm2 = session.getCollectionClassMeta(List.class, String.class);
- List sort = req.getQueryParameter("s", cm2);
- boolean ignoreCase = req.getQueryParameter("i", Boolean.class, false);
- int pos = req.getQueryParameter("p", Integer.class, 0);
- int limit = req.getQueryParameter("l", Integer.class, 0);
+ List<String> view = req.getQueryParameter("v", List.class, String.class);
+ List sort = req.getQueryParameter("s", List.class, String.class);
+ boolean ignoreCase = req.getQueryParameter("i", false, Boolean.class);
+ int pos = req.getQueryParameter("p", 0, Integer.class);
+ int limit = req.getQueryParameter("l", 0, Integer.class);
o = f.filterCollection(query, view, sort, pos, limit, ignoreCase);
} else {
- ClassMeta<List<String>> cm2 = session.getCollectionClassMeta(List.class, String.class);
- List<String> view = req.getQueryParameter("v", cm2);
+ List<String> view = req.getQueryParameter("v", List.class, String.class);
o = f.filterMap(view);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java b/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java
index f99c3c9..29ea2e9 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceDescription.java
@@ -18,7 +18,7 @@ import org.apache.juneau.rest.*;
/**
* Shortcut label for child resources. Typically used in router resources.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Instead of this...</jc>
* <jk>new</jk> NameDescription(<jk>new</jk> Link(<js>"httpTool"</js>, uri + <js>"/httpTool"</js>), <js>"HTTP request test client"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceLink.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceLink.java b/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceLink.java
index 4c3e234..2325fdd 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceLink.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/labels/ResourceLink.java
@@ -27,7 +27,7 @@ public class ResourceLink extends Link {
*
* @param req The HTTP request from the parent resource.
* @param childPath The child resource path.
- * @param args Optional {@link MessageFormat}-style arguments in the child path.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public ResourceLink(RestRequest req, String childPath, Object...args) {
super(getName(getPath(childPath,args)), getHref(req, getPath(childPath,args)));
@@ -39,7 +39,7 @@ public class ResourceLink extends Link {
* @param label The label for the link.
* @param req The HTTP request from the parent resource.
* @param childPath The child resource path.
- * @param args Optional {@link MessageFormat}-style arguments in the child path.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public ResourceLink(String label, RestRequest req, String childPath, Object...args) {
super(label, getHref(req, getPath(childPath,args)));
[5/7] incubator-juneau git commit: Eliminate ClassMeta dependencies
from Parser. Clean up docs.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 3559590..d5c2b3f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -25,13 +25,13 @@ import org.apache.juneau.transform.*;
/**
* Serializes POJO models to JSON.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>application/json, text/json</code>
* <p>
* Produces <code>Content-Type</code> types: <code>application/json</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* The conversion is as follows...
* <ul class='spaced-list'>
@@ -52,7 +52,7 @@ import org.apache.juneau.transform.*;
* This serializer provides several serialization options. Typically, one of the predefined DEFAULT serializers will be sufficient.
* However, custom serializers can be constructed to fine-tune behavior.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -69,7 +69,7 @@ import org.apache.juneau.transform.*;
* <li>{@link SimpleReadable} - Default serializer, single quotes, simple mode, with whitespace.
* </ul>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Use one of the default serializers to serialize a POJO</jc>
* String json = JsonSerializer.<jsf>DEFAULT</jsf>.serialize(someObject);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerContext.java
index 8478384..c4a62cd 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerContext.java
@@ -60,11 +60,11 @@ import org.apache.juneau.serializer.*;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/json/JsonWriter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonWriter.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonWriter.java
index 59e622a..374cf94 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonWriter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonWriter.java
@@ -20,7 +20,10 @@ import org.apache.juneau.serializer.*;
/**
* Specialized writer for serializing JSON.
* <p>
- * <b>Note: This class is not intended for external use.</b>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This class is not intended for external use.
+ * </ul>
*/
public final class JsonWriter extends SerializerWriter {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/json/annotation/Json.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/annotation/Json.java b/juneau-core/src/main/java/org/apache/juneau/json/annotation/Json.java
index 6a32832..f8ee5d0 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/annotation/Json.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/annotation/Json.java
@@ -40,7 +40,7 @@ public @interface Json {
* <p>
* This annotation can be applied to beans as well as other objects serialized to other types (e.g. strings).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@Json</ja>(wrapperAttr=<js>"myWrapper"</js>)
* <jk>public class</jk> MyBean {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackInputStream.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackInputStream.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackInputStream.java
index 7835858..64fe9d9 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackInputStream.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackInputStream.java
@@ -21,7 +21,10 @@ import org.apache.juneau.internal.*;
/**
* Specialized input stream for parsing MessagePack streams.
* <p>
- * <b>Note: This class is not intended for external use.</b>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This class is not intended for external use.
+ * </ul>
*/
public final class MsgPackInputStream extends InputStream {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
index 94d0c76..73673dd 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
@@ -21,7 +21,10 @@ import java.util.concurrent.atomic.*;
/**
* Specialized output stream for serializing MessagePack streams.
* <p>
- * <b>Note: This class is not intended for external use.</b>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This class is not intended for external use.
+ * </ul>
*/
public final class MsgPackOutputStream extends OutputStream {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
index 8ea0f4a..9113093 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
@@ -26,11 +26,11 @@ import org.apache.juneau.transform.*;
/**
* Parses a MessagePack stream into a POJO model.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Content-Type</code> types: <code>octal/msgpack</code>
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -193,7 +193,6 @@ public final class MsgPackParser extends InputStreamParser {
@Override /* Parser */
protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
MsgPackParserSession s = (MsgPackParserSession)session;
- type = s.normalizeClassMeta(type);
MsgPackInputStream is = s.getInputStream();
T o = parseAnything(s, type, is, s.getOuter(), null);
return o;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParserContext.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParserContext.java
index 0eda758..2e04978 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParserContext.java
@@ -38,11 +38,11 @@ import org.apache.juneau.parser.*;
* <p>
* None.
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../parser/ParserContext.html#ConfigProperties'>ParserContext</a> - Configurable properties common to all parsers.
+ * <li class='c'><a class="doclink" href="../parser/ParserContext.html#ConfigProperties">ParserContext</a> - Configurable properties common to all parsers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index 4e4ed0d..4ab038b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -23,13 +23,13 @@ import org.apache.juneau.transform.*;
/**
* Serializes POJO models to MessagePack.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>octal/msgpack</code>
* <p>
* Produces <code>Content-Type</code> types: <code>octal/msgpack</code>
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerContext.java
index 282d7ac..ced4439 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerContext.java
@@ -38,11 +38,11 @@ import org.apache.juneau.serializer.*;
* <p>
* None.
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/parser/InputStreamParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/InputStreamParser.java b/juneau-core/src/main/java/org/apache/juneau/parser/InputStreamParser.java
index 24de153..6abdeb5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/InputStreamParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/InputStreamParser.java
@@ -17,7 +17,7 @@ import org.apache.juneau.annotation.*;
/**
* Subclass of {@link Parser} for byte-based parsers.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This class is typically the parent class of all byte-based parsers.
* It has 1 abstract method to implement...
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/parser/ParseException.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/ParseException.java b/juneau-core/src/main/java/org/apache/juneau/parser/ParseException.java
index f3180a7..6e98c2a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/ParseException.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/ParseException.java
@@ -30,7 +30,7 @@ public final class ParseException extends FormattedException {
*
* @param session The parser session to extract information from.
* @param message The exception message containing {@link MessageFormat}-style arguments.
- * @param args Message arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public ParseException(ParserSession session, String message, Object...args) {
super(getMessage(session, message, args));
@@ -40,7 +40,7 @@ public final class ParseException extends FormattedException {
* Constructor.
*
* @param message The exception message containing {@link MessageFormat}-style arguments.
- * @param args Message arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public ParseException(String message, Object...args) {
super(getMessage(null, message, args));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java b/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
index 08fb31f..9ec061a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
@@ -20,7 +20,6 @@ import java.text.*;
import java.util.*;
import org.apache.juneau.*;
-import org.apache.juneau.MediaType;
import org.apache.juneau.annotation.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.transform.*;
@@ -37,7 +36,7 @@ import org.apache.juneau.utils.*;
* However, the media types can also be specified programmatically by overriding the {@link #getMediaTypes()} method.
*
* <a id='ValidDataConversions'></a><h6 class='topic'>Valid data conversions</h6>
- * Parsers can parse any parsable POJO types, as specified in the <a class='doclink' href='../../../../overview-summary.html#Core.PojoCategories'>POJO Categories</a>.
+ * Parsers can parse any parsable POJO types, as specified in the <a class="doclink" href="../../../../overview-summary.html#Core.PojoCategories">POJO Categories</a>.
* <p>
* Some examples of conversions are shown below...
* </p>
@@ -161,7 +160,6 @@ public abstract class Parser extends CoreApi {
* @param type The class type of the object to create.
* If <jk>null</jk> or <code>Object.<jk>class</jk></code>, object type is based on what's being parsed.
* For example, when parsing JSON text, it may return a <code>String</code>, <code>Number</code>, <code>ObjectMap</code>, etc...
- *
* @param <T> The class type of the object to create.
* @return The parsed object.
* @throws Exception If thrown from underlying stream, or if the input contains a syntax error or is malformed.
@@ -180,17 +178,16 @@ public abstract class Parser extends CoreApi {
//--------------------------------------------------------------------------------
/**
- * Parses the content of the reader and creates an object of the specified type.
+ * Entry point for all parsing calls.
+ * <p>
+ * Calls the {@link #doParse(ParserSession, ClassMeta)} implementation class and catches/rewraps any exceptions thrown.
* @param session The runtime session returned by {@link #createSession(Object, ObjectMap, Method, Object, Locale, TimeZone, MediaType)}.
* @param type The class type of the object to create.
- * If <jk>null</jk> or <code>Object.<jk>class</jk></code>, object type is based on what's being parsed.
- * For example, when parsing JSON text, it may return a <code>String</code>, <code>Number</code>, <code>ObjectMap</code>, etc...
- *
* @param <T> The class type of the object to create.
* @return The parsed object.
* @throws ParseException If the input contains a syntax error or is malformed, or is not valid for the specified type.
*/
- public final <T> T parse(ParserSession session, ClassMeta<T> type) throws ParseException {
+ public final <T> T parseSession(ParserSession session, ClassMeta<T> type) throws ParseException {
try {
return doParse(session, type);
} catch (ParseException e) {
@@ -207,10 +204,41 @@ public abstract class Parser extends CoreApi {
}
/**
- * Parses the content of the reader and creates an object of the specified type.
+ * Parses input into the specified object type.
+ * The type can be a simple type (e.g. beans, strings, numbers) or parameterized type (collections/maps).
+ *
+ * <h5 class='section'>Examples:</h5>
+ * <p class='bcode'>
+ * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
+ *
+ * <jc>// Parse into a linked-list of strings.</jc>
+ * List l = p.parse(json, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of beans.</jc>
+ * List l = p.parse(json, LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>);
+ *
+ * <jc>// Parse into a linked-list of linked-lists of strings.</jc>
+ * List l = p.parse(json, LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of string keys/values.</jc>
+ * Map m = p.parse(json, TreeMap.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map containing string keys and values of lists containing beans.</jc>
+ * Map m = p.parse(json, TreeMap.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);
+ * </p>
* <p>
- * Equivalent to calling <code>parser.parse(in, type, <jk>null</jk>);</code>
+ * <code>Collection</code> classes are assumed to be followed by zero or one objects indicating the element type.
+ * <p>
+ * <code>Map</code> classes are assumed to be followed by zero or two meta objects indicating the key and value types.
+ * <p>
+ * The array can be arbitrarily long to indicate arbitrarily complex data structures.
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>Use the {@link #parse(Object, Class)} method instead if you don't need a parameterized map/collection.
+ * </ul>
*
+ * @param <T> The class type of the object to create.
* @param input The input.
* <br>Character-based parsers can handle the following input class types:
* <ul>
@@ -228,123 +256,67 @@ public abstract class Parser extends CoreApi {
* <li><code><jk>byte</jk>[]</code>
* <li>{@link File}
* </ul>
- * @param type The class type of the object to create.
- * If <jk>null</jk> or <code>Object.<jk>class</jk></code>, object type is based on what's being parsed.
- * For example, when parsing JSON text, it may return a <code>String</code>, <code>Number</code>, <code>ObjectMap</code>, etc...
- * @param <T> The class type of the object to create.
+ * @param type The object type to create.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
* @return The parsed object.
* @throws ParseException If the input contains a syntax error or is malformed, or is not valid for the specified type.
*/
- public final <T> T parse(Object input, ClassMeta<T> type) throws ParseException {
+ @SuppressWarnings("unchecked")
+ public final <T> T parse(Object input, Type type, Type...args) throws ParseException {
ParserSession session = createSession(input);
- return parse(session, type);
+ return (T)parseSession(session, session.getClassMeta(type, args));
}
/**
- * Parses input into the specified object type.
- *
- * <h6 class='topic'>Example:</h6>
+ * Same as {@link #parse(Object, Type, Type...)} except optimized for a non-parameterized class.
+ * <p>
+ * This is the preferred parse method for simple types since you don't need to cast the results.
+ * <h5 class='section'>Examples:</h5>
* <p class='bcode'>
* ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * MyBean b = p.parse(json, MyBean.<jk>class</jk>);
- * </p>
- * <p>
- * This method equivalent to the following code:
- * <p class='bcode'>
- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * ClassMeta<MyBean> cm = p.getBeanContext().getClassMeta(MyBean.<jk>class</jk>);
- * MyBean b = p.parse(json, cm, <jk>null</jk>);
- * </p>
*
- * @param <T> The class type of the object to create.
- * @param input The input. See {@link #parse(Object, ClassMeta)} for supported input types.
- * @param type The class type of the object to create.
- * @return The parsed object.
- * @throws ParseException If the input contains a syntax error or is malformed, or is not valid for the specified type.
- */
- public final <T> T parse(Object input, Class<T> type) throws ParseException {
- ParserSession session = createSession(input);
- return parse(session, session.getClassMeta(type));
- }
-
- /**
- * Parses input into a map with specified key and value types.
+ * <jc>// Parse into a string.</jc>
+ * MyBean b = p.parse(json, String.<jk>class</jk>);
*
- * <h6 class='topic'>Example:</h6>
- * <p class='bcode'>
- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * Map<String,MyBean> m = p.parseMap(json, LinkedHashMap.<jk>class</jk>, String.<jk>class</jk>, MyBean.<jk>class</jk>);
- * </p>
- * <p>
- * A simpler approach is often to just extend the map class you want and just use the normal {@link #parse(Object, Class)} method:
- * </p>
- * <p class='bcode'>
- * <jk>public static class</jk> MyMap <jk>extends</jk> LinkedHashMap<String,MyBean> {}
+ * <jc>// Parse into a bean.</jc>
+ * MyBean b = p.parse(json, MyBean.<jk>class</jk>);
*
- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * Map<String,MyBean> m = p.parse(json, MyMap.<jk>class</jk>);
- * </p>
- * <p>
- * This method equivalent to the following code:
- * </p>
- * <p class='bcode'>
- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * ClassMeta<Map<String,MyBean>> cm = p.getBeanContext().getMapClassMeta(LinkedList.<jk>class</jk>, String.<jk>class</jk>, MyBean.<jk>class</jk>);
- * Map<String,MyBean> m = p.parse(json, cm, <jk>null</jk>);
+ * <jc>// Parse into a linked-list of objects.</jc>
+ * List l = p.parse(json, LinkedList.<jk>class</jk>);
+ *
+ * <jc>// Parse into a map of object keys/values.</jc>
+ * Map m = p.parse(json, TreeMap.<jk>class</jk>);
* </p>
*
- * @param <T> The class type of the object to create.
- * @param input The input. See {@link #parse(Object, ClassMeta)} for supported input types.
- * @param mapClass The map class type.
- * @param keyClass The key class type.
- * @param valueClass The value class type.
+ * @param <T> The class type of the object being created.
+ * @param input The input.
+ * See {@link #parse(Object, Type, Type...)} for details.
+ * @param type The object type to create.
* @return The parsed object.
* @throws ParseException If the input contains a syntax error or is malformed, or is not valid for the specified type.
*/
- public final <K,V,T extends Map<K,V>> T parseMap(Object input, Class<T> mapClass, Class<K> keyClass, Class<V> valueClass) throws ParseException {
+ public final <T> T parse(Object input, Class<T> type) throws ParseException {
ParserSession session = createSession(input);
- ClassMeta<T> cm = session.getClassMeta(mapClass, keyClass, valueClass);
- return parse(session, cm);
+ return parseSession(session, session.getClassMeta(type));
}
/**
- * Parses input into a collection with a specified element type.
- *
- * <h6 class='topic'>Example:</h6>
- * <p class='bcode'>
- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * List<MyBean> l = p.parseCollection(json, LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>);
- * </p>
+ * Same as {@link #parse(Object, Type, Type...)} except the type has already been converted into a {@link ClassMeta} object.
* <p>
- * A simpler approach is often to just extend the collection class you want and just use the normal {@link #parse(Object, Class)} method:
- * </p>
- * <p class='bcode'>
- * <jk>public static class</jk> MyBeanCollection <jk>extends</jk> LinkedList<MyBean> {}
+ * This is mostly an internal method used by the framework.
*
- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * List<MyBean> l = p.parse(json, MyBeanCollection.<jk>class</jk>);
- * </p>
- * <p>
- * This method equivalent to the following code:
- * </p>
- * <p class='bcode'>
- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
- * ClassMeta<List<MyBean>> cm = p.getBeanContext().getCollectionClassMeta(LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>);
- * List<MyBean> l = p.parse(json, cm, <jk>null</jk>);
- * </p>
- *
- * @param <T> The class type of the object to create.
- * @param input The input. See {@link #parse(Object, ClassMeta)} for supported input types.
- * @param collectionClass The collection class type.
- * @param entryClass The class type of entries in the collection.
+ * @param <T> The class type of the object being created.
+ * @param input The input.
+ * See {@link #parse(Object, Type, Type...)} for details.
+ * @param type The object type to create.
* @return The parsed object.
* @throws ParseException If the input contains a syntax error or is malformed, or is not valid for the specified type.
- * @throws IOException If a problem occurred trying to read from the reader.
*/
- public final <E,T extends Collection<E>> T parseCollection(Object input, Class<T> collectionClass, Class<E> entryClass) throws ParseException, IOException {
- ParserSession session = createSession(input);
- ClassMeta<T> cm = session.getClassMeta(collectionClass, entryClass);
- return parse(session, cm);
+ public final <T> T parse(Object input, ClassMeta<T> type) throws ParseException {
+ return parseSession(createSession(input), type);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java b/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
index 33b78fd..800db11 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
@@ -22,7 +22,7 @@ import org.apache.juneau.*;
/**
* Represents a group of {@link Parser Parsers} that can be looked up by media type.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Provides the following features:
* <ul class='spaced-list'>
@@ -42,7 +42,7 @@ import org.apache.juneau.*;
* For example, calling <code>g.append(P1.<jk>class</jk>,P2.<jk>class</jk>).append(P3.<jk>class</jk>,P4.<jk>class</jk>)</code>
* will result in the order <code>P3, P4, P1, P2</code>.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a new parser group</jc>
* ParserGroup g = <jk>new</jk> ParserGroup();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java b/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
index 6473ea4..d0ea5b9 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
@@ -17,7 +17,7 @@ import org.apache.juneau.annotation.*;
/**
* Subclass of {@link Parser} for characters-based parsers.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This class is typically the parent class of all character-based parsers.
* It has 1 abstract method to implement...
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
index 4a8cc65..68d6a33 100644
--- a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
@@ -19,22 +19,22 @@ import org.apache.juneau.parser.*;
import org.apache.juneau.transform.*;
/**
- * Parsers HTTP plain text request bodies into <a href='../../../../overview-summary.html#Core.PojoCategories'>Group 5</a> POJOs.
+ * Parsers HTTP plain text request bodies into <a class="doclink" href="../../../../overview-summary.html#Core.PojoCategories">Group 5</a> POJOs.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/plain</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/plain</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Essentially just converts plain text to POJOs via static <code>fromString()</code> or <code>valueOf()</code>, or
* through constructors that take a single string argument.
* <p>
* Also parses objects using a transform if the object class has an {@link PojoSwap PojoSwap<?,String>} transform defined on it.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
index 52ae7f8..0d04110 100644
--- a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
@@ -20,19 +20,19 @@ import org.apache.juneau.transform.*;
/**
* Serializes POJOs to plain text using just the <code>toString()</code> method on the serialized object.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/plain</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/plain</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Essentially converts POJOs to plain text using the <code>toString()</code> method.
* <p>
* Also serializes objects using a transform if the object class has an {@link PojoSwap PojoSwap<?,String>} transform defined on it.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java b/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
index 08edceb..9fddf75 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
@@ -19,7 +19,7 @@ import org.apache.juneau.annotation.*;
/**
* Subclass of {@link Serializer} for byte-based serializers.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This class is typically the parent class of all byte-based serializers.
* It has 1 abstract method to implement...
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/SerializeException.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializeException.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializeException.java
index 71b9b9e..5f974dc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializeException.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializeException.java
@@ -30,7 +30,7 @@ public final class SerializeException extends FormattedException {
*
* @param session The serializer session to extract information from.
* @param message The exception message containing {@link MessageFormat}-style arguments.
- * @param args Message arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public SerializeException(SerializerSession session, String message, Object...args) {
super(getMessage(session, message, args));
@@ -40,7 +40,7 @@ public final class SerializeException extends FormattedException {
* Constructor.
*
* @param message The exception message containing {@link MessageFormat}-style arguments.
- * @param args Message arguments.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public SerializeException(String message, Object...args) {
super(getMessage(null, message, args));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/Serializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/Serializer.java b/juneau-core/src/main/java/org/apache/juneau/serializer/Serializer.java
index c2264aa..ccd0cc8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/Serializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/Serializer.java
@@ -25,7 +25,7 @@ import org.apache.juneau.soap.*;
/**
* Parent class for all Juneau serializers.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Base serializer class that serves as the parent class for all serializers.
* <p>
@@ -38,7 +38,7 @@ import org.apache.juneau.soap.*;
* However, the media types can also be specified programmatically by overriding the {@link #getMediaTypes()}
* and {@link #getResponseContentType()} methods.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* See {@link SerializerContext} for a list of configurable properties that can be set on this class
* using the {@link #setProperty(String, Object)} method.
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java
index 3bc0f06..7031b12 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerContext.java
@@ -181,7 +181,10 @@ public class SerializerContext extends BeanContext {
* the following when <jsf>SERIALIZER_ignoreRecursions</jsf> is <jk>true</jk>...
* <code>{A:{B:{C:null}}}</code><br>
* <p>
- * Note: Checking for recursion can cause a small performance penalty.
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>Checking for recursion can cause a small performance penalty.
+ * </ul>
*/
public static final String SERIALIZER_detectRecursions = "Serializer.detectRecursions";
@@ -334,7 +337,7 @@ public class SerializerContext extends BeanContext {
* (i.e. URIs not containing a schema and not starting with <js>'/'</js>).
* (e.g. <js>"foo/bar"</js>)
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <table class='styled'>
* <tr><th>SERIALIZER_relativeUriBase</th><th>URI</th><th>Serialized URI</th></tr>
* <tr>
@@ -370,7 +373,7 @@ public class SerializerContext extends BeanContext {
* (i.e. URIs starting with <js>'/'</js>).
* (e.g. <js>"/foo/bar"</js>)
*
- * <h6 class='topic'>Examples:</h6>
+ * <h5 class='section'>Examples:</h5>
* <table class='styled'>
* <tr><th>SERIALIZER_absolutePathUriBase</th><th>URI</th><th>Serialized URI</th></tr>
* <tr>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
index 4761265..ec62ae8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
@@ -22,7 +22,7 @@ import org.apache.juneau.*;
/**
* Represents a group of {@link Serializer Serializers} that can be looked up by media type.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Provides the following features:
* <ul class='spaced-list'>
@@ -42,7 +42,7 @@ import org.apache.juneau.*;
* For example, calling <code>g.append(S1.<jk>class</jk>,S2.<jk>class</jk>).append(S3.<jk>class</jk>,S4.<jk>class</jk>)</code>
* will result in the order <code>S3, S4, S1, S2</code>.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a new serializer group</jc>
* SerializerGroup g = <jk>new</jk> SerializerGroup();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
index 115608b..00f8b8b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
@@ -23,7 +23,7 @@ import org.apache.juneau.internal.*;
* Modeled after the Java ProcessBuilder class so that you can chain commands to reduce
* the need for string concatenation for performance reasons.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* writer.append(<js>"foo"</js>).nl().i(5).append(<js>"bar"</js>);
* </p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/StringObject.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/StringObject.java b/juneau-core/src/main/java/org/apache/juneau/serializer/StringObject.java
index f291639..65166bd 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/StringObject.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/StringObject.java
@@ -23,7 +23,7 @@ import org.apache.juneau.*;
* <p>
* Instances of this method are created by the {@link WriterSerializer#toStringObject(Object)} method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// The POJO will not be serialized unless DEBUG is enabled.</jc>
* logger.log(<jsf>DEBUG</jsf>, <js>"Object contents are: {0}"</js>, JsonSerializer.<jsf>DEFAULT</jsf>.toObjectString(myPojo));
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/WriterSerializer.java b/juneau-core/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
index a84b9f9..5f38d4a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
@@ -22,7 +22,7 @@ import org.apache.juneau.annotation.*;
/**
* Subclass of {@link Serializer} for character-based serializers.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This class is typically the parent class of all character-based serializers.
* It has 2 abstract methods to implement...
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
index f340ff7..c32dd80 100644
--- a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
@@ -22,17 +22,17 @@ import org.apache.juneau.xml.*;
/**
* Serializes POJOs to HTTP responses as XML+SOAP.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/xml+soap</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/xml+soap</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Essentially the same output as {@link XmlDocSerializer}, except wrapped in a standard SOAP envelope.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerContext.java
index 4f63db4..d85befc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/soap/SoapXmlSerializerContext.java
@@ -27,11 +27,11 @@ package org.apache.juneau.soap;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/svl/VarResolver.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/svl/VarResolver.java b/juneau-core/src/main/java/org/apache/juneau/svl/VarResolver.java
index 1d39c77..6ffdaeb 100644
--- a/juneau-core/src/main/java/org/apache/juneau/svl/VarResolver.java
+++ b/juneau-core/src/main/java/org/apache/juneau/svl/VarResolver.java
@@ -32,7 +32,7 @@ import org.apache.juneau.svl.vars.*;
* <p>
* The {@link Var} interface defines how variables are converted to values.
* <p>
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> SystemPropertiesVar <jk>extends</jk> SimpleVar {
*
@@ -85,7 +85,7 @@ import org.apache.juneau.svl.vars.*;
* Var resolvers can be cloned by using the {@link #clone()} method.
* Cloning a resolver will copy it's {@link Var} class names and context objects.
* <p>
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a resolver that copies the default resolver and adds $C and $ARG vars.</jc>
* VarResolver myVarResolver = VarResolver.<jsf>DEFAULT</jsf>.clone().addVars(ConfigVar.<jk>class</jk>, ArgsVar.<jk>class</jk>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java b/juneau-core/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
index 2c2fc4d..b005c1f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
+++ b/juneau-core/src/main/java/org/apache/juneau/svl/vars/ArgsVar.java
@@ -23,7 +23,7 @@ import org.apache.juneau.utils.*;
* This variable resolver requires that an {@link Args} object be set as a context object on the resolver or a
* session object on the resolver session.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create an args object from the main(String[]) method.</jc>
* Args args = new Args(argv);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/svl/vars/ConfigFileVar.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/svl/vars/ConfigFileVar.java b/juneau-core/src/main/java/org/apache/juneau/svl/vars/ConfigFileVar.java
index 1a84833..ff0d2d3 100644
--- a/juneau-core/src/main/java/org/apache/juneau/svl/vars/ConfigFileVar.java
+++ b/juneau-core/src/main/java/org/apache/juneau/svl/vars/ConfigFileVar.java
@@ -24,7 +24,7 @@ import org.apache.juneau.svl.*;
* This variable resolver requires that a {@link ConfigFile} object be set as a context object on the resolver or a
* session object on the resolver session.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a config file object.</jc>
* ConfigFile configFile = ConfigMgr.<jsf>DEFAULT</jsf>.get(<js>"MyConfig.cfg"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java b/juneau-core/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
index d6f3f12..d58e442 100644
--- a/juneau-core/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
+++ b/juneau-core/src/main/java/org/apache/juneau/svl/vars/EnvVariablesVar.java
@@ -19,7 +19,7 @@ import org.apache.juneau.svl.*;
* <p>
* The format for this var is <js>"$E{envVar}"</js> or <js>"$E{envVar,defaultValue}"</js>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a variable resolver that resolves environment variables (e.g. "$E{PATH}")</jc>
* VarResolver r = <jk>new</jk> VarResolver().addVars(EnvVariablesVar.<js>class</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java b/juneau-core/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
index ac1f250..2e35666 100644
--- a/juneau-core/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
+++ b/juneau-core/src/main/java/org/apache/juneau/svl/vars/ManifestFileVar.java
@@ -23,7 +23,7 @@ import org.apache.juneau.utils.*;
* This variable resolver requires that a {@link ManifestFile} object be set as a context object on the resolver or a
* session object on the resolver session.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a ManifestFile object that contains the manifest of the jar file containing this class.</jc>
* ManifestFile mf = <jk>new</jk> ManifestFile(<jk>this</jk>.getClass());
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java b/juneau-core/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
index 1261f0e..937b149 100644
--- a/juneau-core/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
+++ b/juneau-core/src/main/java/org/apache/juneau/svl/vars/SystemPropertiesVar.java
@@ -19,7 +19,7 @@ import org.apache.juneau.svl.*;
* <p>
* The format for this var is <js>"$S{systemProperty}"</js> or <js>"$S{systemProperty,defaultValue}"</js>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create a variable resolver that resolves system properties (e.g. "$S{java.home}")</jc>
* VarResolver r = <jk>new</jk> VarResolver().addVars(SystemPropertiesVar.<js>class</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java b/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
index 46e6ec4..6c2928f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilterBuilder.java
@@ -23,7 +23,7 @@ import org.apache.juneau.*;
* Bean filter builders must have a public no-arg constructor.
* Builder settings should be set in the constructor using the provided setters on this class.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create our serializer with a bean filter.</jc>
* WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(AddressFilter.<jk>class</jk>);
@@ -40,7 +40,7 @@ import org.apache.juneau.*;
* }
* </p>
*
- * <h6 class='topic'>Additional information</h6>
+ * <h5 class='section'>Additional information:</h5>
* See {@link org.apache.juneau.transform} for more information.
*/
public abstract class BeanFilterBuilder {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java b/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
index 5a1d104..efd94d1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
@@ -22,7 +22,7 @@ import org.apache.juneau.serializer.*;
/**
* Used to swap out non-serializable objects with serializable replacements during serialization, and vis-versa during parsing.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* <code>PojoSwaps</code> are used to extend the functionality of the serializers and parsers to be able to handle POJOs
* that aren't automatically handled by the serializers or parsers. For example, JSON does not have a standard
@@ -90,7 +90,7 @@ import org.apache.juneau.serializer.*;
* in which case it's not possible to reparse it back into a {@code Date}, since there is no way for the {@code Parser} to
* know it's a {@code Date} from just the JSON or XML text.
*
- * <h6 class='topic'>Additional information</h6>
+ * <h5 class='section'>Additional information:</h5>
* See {@link org.apache.juneau.transform} for more information.
*
* @param <T> The normal form of the class.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/transforms/BeanStringSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/BeanStringSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/BeanStringSwap.java
index f6d38f7..c7d1c67 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/BeanStringSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/BeanStringSwap.java
@@ -22,7 +22,7 @@ import org.apache.juneau.transform.*;
* being turned into Maps by the {@link BeanContext} (or worse, throwing {@link BeanRuntimeException BeanRuntimeExceptions}).
* <p>
* This is usually a one-way transform.
- * Beans serialized as strings cannot be reconstituted using a parser unless it is a <a class='doclink' href='../../../../overview-summary.html#Core.PojoCategories'>Type 5 POJO</a>.
+ * Beans serialized as strings cannot be reconstituted using a parser unless it is a <a class="doclink" href="../../../../overview-summary.html#Core.PojoCategories">Type 5 POJO</a>.
*
* @param <T> The class type of the bean.
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
index f6b1f3e..a4bf22c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
@@ -88,7 +88,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link String Strings} using the {@code Date.toString()} method.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Wed Jul 04 15:30:45 EST 2001"</js>
* </ul>
@@ -103,7 +103,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to ISO8601 date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"2001-07-04T15:30:45-05:00"</js>
* <li><js>"2001-07-04T15:30:45Z"</js>
@@ -148,7 +148,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Same as {@link ISO8601DT}, except always serializes in GMT.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <js>"2001-07-04T15:30:45Z"</js>
*/
public static class ISO8601DTZ extends CalendarSwap {
@@ -183,7 +183,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Same as {@link CalendarSwap.ISO8601DT} except serializes to millisecond precision.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <js>"2001-07-04T15:30:45.123Z"</js>
*/
public static class ISO8601DTP extends ISO8601DT {
@@ -198,7 +198,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Same as {@link CalendarSwap.ISO8601DTZ} except serializes to millisecond precision.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <js>"2001-07-04T15:30:45.123"</js>
*/
public static class ISO8601DTPZ extends ISO8601DTZ {
@@ -213,7 +213,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to RFC2822 date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Sat, 03 Mar 2001 10:11:12 +0000"</js> <jc>// en_US</jc>
* <li><js>"\u571f, 03 3 2001 10:11:12 +0000"</js> <jc>// ja_JP</jc>
@@ -230,7 +230,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Same as {@link RFC2822DT}, except always serializes in GMT.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Sat, 03 Mar 2001 10:11:12 GMT"</js> <jc>// en_US</jc>
* <li><js>"\u571f, 03 3 2001 10:11:12 GMT"</js> <jc>// ja_JP</jc>
@@ -247,7 +247,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to RFC2822 date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"03 Mar 2001"</js> <jc>// en_US</jc>
* <li><js>"03 3 2001"</js> <jc>// ja_JP</jc>
@@ -264,7 +264,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to simple <js>"yyyy/MM/dd HH:mm:ss"</js> date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"2001/03/03 10:11:12"</js>
* </ul>
@@ -279,7 +279,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to simple <js>"yyyy/MM/dd"</js> date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"2001/03/03"</js>
* </ul>
@@ -294,7 +294,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to simple <js>"HH:mm:ss"</js> time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12"</js>
* </ul>
@@ -309,7 +309,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#FULL} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Saturday, March 3, 2001"</js> <jc>// en_US</jc>
* <li><js>"2001\u5e743\u67083\u65e5"</js> <jc>// ja_JP</jc>
@@ -326,7 +326,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#LONG} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"March 3, 2001"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03"</js> <jc>// ja_JP</jc>
@@ -343,7 +343,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#MEDIUM} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Mar 3, 2001"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03"</js> <jc>// ja_JP</jc>
@@ -360,7 +360,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#SHORT} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"3/3/01"</js> <jc>// en_US</jc>
* <li><js>"01/03/03"</js> <jc>// ja_JP</jc>
@@ -377,7 +377,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#FULL} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"10\u664211\u520612\u79d2 GMT"</js> <jc>// ja_JP</jc>
@@ -394,7 +394,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#LONG} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"10:11:12 GMT"</js> <jc>// ja_JP</jc>
@@ -411,7 +411,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#MEDIUM} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12 AM"</js> <jc>// en_US</jc>
* <li><js>"10:11:12"</js> <jc>// ja_JP</jc>
@@ -428,7 +428,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#SHORT} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11 AM"</js> <jc>// en_US</jc>
* <li><js>"10:11 AM"</js> <jc>// ja_JP</jc>
@@ -445,7 +445,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#FULL} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Saturday, March 3, 2001 10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"2001\u5e743\u67083\u65e5 10\u664211\u520612\u79d2 GMT"</js> <jc>// ja_JP</jc>
@@ -462,7 +462,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#LONG} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"March 3, 2001 10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03 10:11:12 GMT"</js> <jc>// ja_JP</jc>
@@ -479,7 +479,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#MEDIUM} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Mar 3, 2001 10:11:12 AM"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03 10:11:12"</js> <jc>// ja_JP</jc>
@@ -496,7 +496,7 @@ public class CalendarSwap extends StringSwap<Calendar> {
/**
* Transforms {@link Calendar Calendars} to {@link DateFormat#SHORT} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"3/3/01 10:11 AM"</js> <jc>// en_US</jc>
* <li><js>"01/03/03 10:11"</js> <jc>// ja_JP</jc>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
index 95673df..8e8b8a7 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
@@ -87,7 +87,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link String Strings} using the {@code Date.toString()} method.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Wed Jul 04 15:30:45 EST 2001"</js>
* </ul>
@@ -102,7 +102,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Calendar Calendars} to ISO8601 date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"2001-07-04T15:30:45-05:00"</js>
* <li><js>"2001-07-04T15:30:45Z"</js>
@@ -149,7 +149,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Same as {@link ISO8601DT}, except always serializes in GMT.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <js>"2001-07-04T15:30:45Z"</js>
*/
public static class ISO8601DTZ extends DateSwap {
@@ -186,7 +186,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Same as {@link CalendarSwap.ISO8601DT} except serializes to millisecond precision.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <js>"2001-07-04T15:30:45.123Z"</js>
*/
public static class ISO8601DTP extends ISO8601DT {
@@ -203,7 +203,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Same as {@link CalendarSwap.ISO8601DTZ} except serializes to millisecond precision.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <js>"2001-07-04T15:30:45.123"</js>
*/
public static class ISO8601DTPZ extends ISO8601DTZ {
@@ -220,7 +220,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to RFC2822 date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Sat, 03 Mar 2001 10:11:12 +0000"</js> <jc>// en_US</jc>
* <li><js>"\u571f, 03 3 2001 10:11:12 +0000"</js> <jc>// ja_JP</jc>
@@ -237,7 +237,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Same as {@link DateSwap.RFC2822DT}, except always serializes in GMT.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Sat, 03 Mar 2001 10:11:12 GMT"</js> <jc>// en_US</jc>
* <li><js>"\u571f, 03 3 2001 10:11:12 GMT"</js> <jc>// ja_JP</jc>
@@ -254,7 +254,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to RFC2822 date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"03 Mar 2001"</js> <jc>// en_US</jc>
* <li><js>"03 3 2001"</js> <jc>// ja_JP</jc>
@@ -271,7 +271,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to simple <js>"yyyy/MM/dd HH:mm:ss"</js> date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"2001/03/03 10:11:12"</js>
* </ul>
@@ -286,7 +286,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to simple <js>"yyyy/MM/dd"</js> date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"2001/03/03"</js>
* </ul>
@@ -301,7 +301,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to simple <js>"HH:mm:ss"</js> time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12"</js>
* </ul>
@@ -316,7 +316,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#FULL} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Saturday, March 3, 2001"</js> <jc>// en_US</jc>
* <li><js>"2001\u5e743\u67083\u65e5"</js> <jc>// ja_JP</jc>
@@ -333,7 +333,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#LONG} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"March 3, 2001"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03"</js> <jc>// ja_JP</jc>
@@ -350,7 +350,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#MEDIUM} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Mar 3, 2001"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03"</js> <jc>// ja_JP</jc>
@@ -367,7 +367,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#SHORT} date strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"3/3/01"</js> <jc>// en_US</jc>
* <li><js>"01/03/03"</js> <jc>// ja_JP</jc>
@@ -384,7 +384,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#FULL} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"10\u664211\u520612\u79d2 GMT"</js> <jc>// ja_JP</jc>
@@ -401,7 +401,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#LONG} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"10:11:12 GMT"</js> <jc>// ja_JP</jc>
@@ -418,7 +418,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#MEDIUM} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11:12 AM"</js> <jc>// en_US</jc>
* <li><js>"10:11:12"</js> <jc>// ja_JP</jc>
@@ -435,7 +435,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#SHORT} time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"10:11 AM"</js> <jc>// en_US</jc>
* <li><js>"10:11 AM"</js> <jc>// ja_JP</jc>
@@ -452,7 +452,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#FULL} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Saturday, March 3, 2001 10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"2001\u5e743\u67083\u65e5 10\u664211\u520612\u79d2 GMT"</js> <jc>// ja_JP</jc>
@@ -469,7 +469,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#LONG} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"March 3, 2001 10:11:12 AM GMT"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03 10:11:12 GMT"</js> <jc>// ja_JP</jc>
@@ -486,7 +486,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#MEDIUM} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"Mar 3, 2001 10:11:12 AM"</js> <jc>// en_US</jc>
* <li><js>"2001/03/03 10:11:12"</js> <jc>// ja_JP</jc>
@@ -503,7 +503,7 @@ public class DateSwap extends StringSwap<Date> {
/**
* Transforms {@link Date Dates} to {@link DateFormat#SHORT} date-time strings.
*
- * <h6 class='topic'>Example output:</h6>
+ * <h5 class='section'>Example output:</h5>
* <ul>
* <li><js>"3/3/01 10:11 AM"</js> <jc>// en_US</jc>
* <li><js>"01/03/03 10:11"</js> <jc>// ja_JP</jc>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
index d434a73..f8129ac 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
@@ -26,7 +26,7 @@ import org.apache.juneau.xml.*;
/**
* Transforms the contents of a {@link Reader} into an {@code Object}.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* The {@code Reader} must contain JSON, Juneau-generated XML (output from {@link XmlSerializer}),
* or Juneau-generated HTML (output from {@link JsonSerializer}) in order to be parsed correctly.
@@ -98,7 +98,7 @@ public class ReaderSwap extends PojoSwap<Reader,Object> {
try {
if (parser == null)
return IOUtils.read(o);
- return parser.parse(o, session.object());
+ return parser.parse(o, Object.class);
} catch (IOException e) {
return e.getLocalizedMessage();
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
index 0b78561..7f803ae 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
@@ -27,15 +27,15 @@ import org.apache.juneau.transform.*;
/**
* Parses UON (a notation for URL-encoded query parameter values) text into POJO models.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Content-Type</code> types: <code>text/uon</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This parser uses a state machine, which makes it very fast and efficient.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -731,7 +731,6 @@ public class UonParser extends ReaderParser {
@Override /* Parser */
protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
UonParserSession s = (UonParserSession)session;
- type = session.normalizeClassMeta(type);
UonReader r = s.getReader();
T o = parseAnything(s, type, r, s.getOuter(), true, null);
validateEnd(s, r);
@@ -743,7 +742,7 @@ public class UonParser extends ReaderParser {
UonParserSession s = (UonParserSession)session;
UonReader r = s.getReader();
readFlag(s, r, 'o');
- m = parseIntoMap(s, r, m, session.getClassMeta(keyType), session.getClassMeta(valueType), null);
+ m = parseIntoMap(s, r, m, (ClassMeta<K>)session.getClassMeta(keyType), (ClassMeta<V>)session.getClassMeta(valueType), null);
validateEnd(s, r);
return m;
}
@@ -753,7 +752,7 @@ public class UonParser extends ReaderParser {
UonParserSession s = (UonParserSession)session;
UonReader r = s.getReader();
readFlag(s, r, 'a');
- c = parseIntoCollection(s, r, c, session.getClassMeta(elementType), false, null);
+ c = parseIntoCollection(s, r, c, (ClassMeta<E>)session.getClassMeta(elementType), false, null);
validateEnd(s, r);
return c;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParserContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParserContext.java
index 6f40db5..144ade5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParserContext.java
@@ -53,11 +53,11 @@ import org.apache.juneau.parser.*;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../parser/ParserContext.html#ConfigProperties'>ParserContext</a> - Configurable properties common to all parsers.
+ * <li class='c'><a class="doclink" href="../parser/ParserContext.html#ConfigProperties">ParserContext</a> - Configurable properties common to all parsers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
index 9c752f2..4a227ed 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
@@ -26,18 +26,18 @@ import org.apache.juneau.transform.*;
/**
* Serializes POJO models to UON (a notation for URL-encoded query parameter values).
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/uon</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/uon</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This serializer provides several serialization options. Typically, one of the predefined DEFAULT serializers will be sufficient.
* However, custom serializers can be constructed to fine-tune behavior.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -122,7 +122,7 @@ import org.apache.juneau.transform.*;
* )
* </p>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Serialize a Map</jc>
* Map m = <jk>new</jk> ObjectMap(<js>"{a:'b',c:1,d:false,e:['f',1,false],g:{h:'i'}}"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
index b7be793..5c7e30e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializerContext.java
@@ -60,11 +60,11 @@ import org.apache.juneau.serializer.*;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java
index f2b4c79..118b5e8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonWriter.java
@@ -20,7 +20,10 @@ import org.apache.juneau.serializer.*;
/**
* Specialized writer for serializing UON-encoded text.
* <p>
- * <b>Note: This class is not intended for external use.</b>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This class is not intended for external use.
+ * </ul>
*/
public final class UonWriter extends SerializerWriter {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java
index 6e6a8d4..95fe474 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingContext.java
@@ -40,11 +40,14 @@ public final class UrlEncodingContext implements Cloneable {
* String s2 = p2.serialize(<jk>new</jk> A()); <jc>// Produces "f1=a&f1=b&f2=c&f2=d"</jc>
* </p>
* <p>
- * <b>Important note:</b> If parsing multi-part parameters, it's highly recommended to use Collections or Lists
- * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value
- * is added to it.
+ * This option only applies to beans.
* <p>
- * This option only applies to beans.
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>If parsing multi-part parameters, it's highly recommended to use <code>Collections</code> or <code>Lists</code>
+ * as bean property types instead of arrays since arrays have to be recreated from scratch every time a value
+ * is added to it.
+ * </ul>
*/
public static final String URLENC_expandedParams = "UrlEncoding.expandedParams";
[6/7] incubator-juneau git commit: Eliminate ClassMeta dependencies
from Parser. Clean up docs.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index a9e52f0..33a163a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -251,7 +251,7 @@ public class BeanPropertyMeta {
if (field != null) {
BeanProperty p = field.getAnnotation(BeanProperty.class);
- rawTypeMeta = f.getClassMeta(p, field.getGenericType(), typeVarImpls);
+ rawTypeMeta = f.resolveClassMeta(p, field.getGenericType(), typeVarImpls);
isUri |= (rawTypeMeta.isUri() || field.isAnnotationPresent(org.apache.juneau.annotation.URI.class));
if (p != null) {
swap = getPropertyPojoSwap(p);
@@ -264,7 +264,7 @@ public class BeanPropertyMeta {
if (getter != null) {
BeanProperty p = getter.getAnnotation(BeanProperty.class);
if (rawTypeMeta == null)
- rawTypeMeta = f.getClassMeta(p, getter.getGenericReturnType(), typeVarImpls);
+ rawTypeMeta = f.resolveClassMeta(p, getter.getGenericReturnType(), typeVarImpls);
isUri |= (rawTypeMeta.isUri() || getter.isAnnotationPresent(org.apache.juneau.annotation.URI.class));
if (p != null) {
if (swap == null)
@@ -278,7 +278,7 @@ public class BeanPropertyMeta {
if (setter != null) {
BeanProperty p = setter.getAnnotation(BeanProperty.class);
if (rawTypeMeta == null)
- rawTypeMeta = f.getClassMeta(p, setter.getGenericParameterTypes()[0], typeVarImpls);
+ rawTypeMeta = f.resolveClassMeta(p, setter.getGenericParameterTypes()[0], typeVarImpls);
isUri |= (rawTypeMeta.isUri() || setter.isAnnotationPresent(org.apache.juneau.annotation.URI.class));
if (p != null) {
if (swap == null)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java b/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
index 0bc404c..13f9657 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanRegistry.java
@@ -69,7 +69,14 @@ public class BeanRegistry {
Map<?,?> m = (Map<?,?>)c.newInstance();
for (Map.Entry<?,?> e : m.entrySet()) {
String typeName = StringUtils.toString(e.getKey());
- ClassMeta<?> val = beanContext.getClassMeta(e.getValue());
+ Object v = e.getValue();
+ ClassMeta<?> val = null;
+ if (v instanceof Type)
+ val = beanContext.getClassMeta((Type)v);
+ else if (v.getClass().isArray())
+ val = getTypedClassMeta(v);
+ else
+ throw new BeanRuntimeException("Class ''{0}'' was passed to BeanRegistry but value of type ''{1}'' found in map is not a Type object.", c.getName(), v.getClass().getName());
map.put(typeName, val);
}
} else {
@@ -86,6 +93,17 @@ public class BeanRegistry {
}
}
+ private ClassMeta<?> getTypedClassMeta(Object array) {
+ int len = Array.getLength(array);
+ if (len == 0)
+ throw new BeanRuntimeException("Map entry had an empty array value.");
+ Type type = (Type)Array.get(array, 0);
+ Type[] args = new Type[len-1];
+ for (int i = 1; i < len; i++)
+ args[i-1] = (Type)Array.get(array, i);
+ return beanContext.getClassMeta(type, args);
+ }
+
/**
* Converts the specified object map into a bean if it contains a <js>"_type"</js> entry in it.
*
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanSession.java b/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
index dc54ac4..540329b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanSession.java
@@ -613,7 +613,7 @@ public class BeanSession extends Session {
* <p>
* If object is not a true bean, then throws a {@link BeanRuntimeException} with an explanation of why it's not a bean.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a bean map around a bean instance</jc>
* BeanMap<Person> bm = BeanContext.<jsf>DEFAULT</jsf>.forBean(<jk>new</jk> Person());
@@ -655,7 +655,7 @@ public class BeanSession extends Session {
* <p>
* If object is not a true bean, throws a {@link BeanRuntimeException} with an explanation of why it's not a bean.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a bean map for new bean using only properties defined in a superclass</jc>
* BeanMap<MySubBean> bm = BeanContext.<jsf>DEFAULT</jsf>.forBean(<jk>new</jk> MySubBean(), MySuperBean.<jk>class</jk>);
@@ -693,7 +693,7 @@ public class BeanSession extends Session {
* <p>
* If object is not a true bean, then throws a {@link BeanRuntimeException} with an explanation of why it's not a bean.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a new bean map wrapped around a new Person object</jc>
* BeanMap<Person> bm = BeanContext.<jsf>DEFAULT</jsf>.newBeanMap(Person.<jk>class</jk>);
@@ -735,7 +735,7 @@ public class BeanSession extends Session {
* Creates a new empty bean of the specified type, except used for instantiating inner member classes that must
* be instantiated within another class instance.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct a new instance of the specified bean class</jc>
* Person p = BeanContext.<jsf>DEFAULT</jsf>.newBean(Person.<jk>class</jk>);
@@ -797,23 +797,6 @@ public class BeanSession extends Session {
}
/**
- * Returns the class type bound to this bean context if the specified class type
- * is from another bean context.
- * <p>
- * For example, this method allows you to pass in an object from <code>BeanContext.<jsf>DEFAULT</jsf>.getMapClassMeta(...)</code>
- * to any of the <code>ReaderParser.parse(Reader, ClassMeta, ParserContext)</code> methods, and the parsers
- * will use this method to replace the class type with the one registered with the parser.
- * This ensures that registered transforms are applied correctly.
- *
- * @param <T> The class type.
- * @param cm The class type.
- * @return The class type bound by this bean context.
- */
- public final <T> ClassMeta<T> normalizeClassMeta(ClassMeta<T> cm) {
- return ctx.normalizeClassMeta(cm);
- }
-
- /**
* Returns a {@code ClassMeta} wrapper around a {@link Class} object.
*
* @param <T> The class type being wrapped.
@@ -825,83 +808,36 @@ public class BeanSession extends Session {
}
/**
- * Returns a {@code ClassMeta} wrapper around a {@link Class} or {@link Type} object.
- *
- * @param <T> The class type being wrapped.
- * @param c The class being wrapped.
- * @return The class meta object containing information about the class.
- */
- public final <T> ClassMeta<T> getClassMeta(Object c) {
- return ctx.getClassMeta(c);
- }
-
- /**
- * Returns a {@link ClassMeta} wrapper around a {@link Map} or {@link Collection} class.
+ * Used to resolve <code>ClassMetas</code> of type <code>Collection</code> and <code>Map</code> that have
+ * <code>ClassMeta</code> values that themselves could be collections or maps.
* <p>
- * Handles the following object arrays:
- * <ul>
- * <li><code>Object[2]</code> containing <code>{Class<? extends Collection>, Object}</code>
- * where the 2nd entry is the entry type which can be a Class/Type or another array.
- * <li><code>Object[3]</code> containing <code>{Class<? extends Map>, Object, Object}</code>
- * where the 2nd entry is the key type which can be a Class/Type and 3rd entry is the value type which can be a Class/Type or another array.
- * </ul>
- *
- * @param c The object array being resolved.
- * @return The class meta object containing information about the class.
- */
- public final <T> ClassMeta<T> getClassMeta(Object...c) {
- return ctx.getClassMeta(c);
- }
-
- /**
- * Convenience method for creating a {@link Map} class meta.
+ * <code>Collection</code> meta objects are assumed to be followed by zero or one meta objects indicating the element type.
* <p>
- * Equivalent to calling <code>getClassMeta(c, keyType, valueType)</code>.
- *
- * @param <K> The map key class type.
- * @param <V> The map value class type.
- * @param <T> The map class type.
- * @param c The map class type.
- * @param keyType The map key class type.
- * @param valueType The map value class type.
- * @return If the key and value types are Object, returns a cached {@link ClassMeta} object.<br>
- * Otherwise, returns a new {@link ClassMeta} object every time.
- */
- public final <K,V,T extends Map<K,V>> ClassMeta<T> getMapClassMeta(Class<T> c, Class<K> keyType, Class<V> valueType) {
- return getClassMeta(c, keyType, valueType);
- }
-
- /**
- * Convenience method for creating a {@link Collection} class meta.
+ * <code>Map</code> meta objects are assumed to be followed by zero or two meta objects indicating the key and value types.
* <p>
- * Equivalent to calling <code>getClassMeta(c, keyType, valueType)</code>.
+ * The array can be arbitrarily long to indicate arbitrarily complex data structures.
*
- * @param <E> The collection element class type.
- * @param <T> The collection class type.
- * @param c The collection class type.
- * @param elementType The collection element class type.
- * @return If the element type is <code>OBJECT</code>, returns a cached {@link ClassMeta} object.<br>
- * Otherwise, returns a new {@link ClassMeta} object every time.
- */
- public final <E,T extends Collection<E>> ClassMeta<T> getCollectionClassMeta(Class<T> c, Class<E> elementType) {
- return getClassMeta(c, getClassMeta(elementType));
- }
-
- /**
- * Constructs a ClassMeta object given the specified object and parameters.
+ * <h5 class='section'>Examples:</h5>
+ * <ul>
+ * <li><code>getClassMeta(String.<jk>class</jk>);</code> - A normal type.
+ * <li><code>getClassMeta(List.<jk>class</jk>);</code> - A list containing objects.
+ * <li><code>getClassMeta(List.<jk>class</jk>, String.<jk>class</jk>);</code> - A list containing strings.
+ * <li><code>getClassMeta(LinkedList.<jk>class</jk>, String.<jk>class</jk>);</code> - A linked-list containing strings.
+ * <li><code>getClassMeta(LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);</code> - A linked-list containing linked-lists of strings.
+ * <li><code>getClassMeta(Map.<jk>class</jk>);</code> - A map containing object keys/values.
+ * <li><code>getClassMeta(Map.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);</code> - A map containing string keys/values.
+ * <li><code>getClassMeta(Map.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);</code> - A map containing string keys and values of lists containing beans.
+ * </ul>
*
- * @param o The parent class type.
- * Can be any of the following types:
- * <ul class='spaced-list'>
- * <li>{@link ClassMeta} object, which just returns the same object.
- * <li>{@link Class} object (e.g. <code>String.<jk>class</jk></code>).
- * <li>{@link Type} object (e.g. {@link ParameterizedType} or {@link GenericArrayType}.
- * <li>Anything else is interpreted as {@code getClassMeta(o.getClass(), parameters);}
- * </ul>
- * @return A ClassMeta object, or <jk>null</jk> if the object is null.
+ * @param type The class to resolve.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * @param args The type arguments of the class if it's a collection or map.
+ * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}
+ * <br>Ignored if the main type is not a map or collection.
+ * @return The class meta.
*/
- public final ClassMeta getClassMeta(Type o) {
- return ctx.getClassMeta(o, null);
+ public final <T> ClassMeta<T> getClassMeta(Type type, Type...args) {
+ return ctx.getClassMeta(type, args);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
index 69c8b33..fdcbd2a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
@@ -739,7 +739,7 @@ public final class ClassMeta<T> implements Type {
* @return The constructor, or <jk>null</jk> if no no-arg constructor exists with the required visibility.
*/
@SuppressWarnings({"rawtypes","unchecked"})
- protected static <T> Constructor<? extends T> findNoArgConstructor(Class<T> c, Visibility v) {
+ protected static <T> Constructor<? extends T> findNoArgConstructor(Class<?> c, Visibility v) {
int mod = c.getModifiers();
if (Modifier.isAbstract(mod))
return null;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/CoreApi.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/CoreApi.java b/juneau-core/src/main/java/org/apache/juneau/CoreApi.java
index 5df8994..1094632 100644
--- a/juneau-core/src/main/java/org/apache/juneau/CoreApi.java
+++ b/juneau-core/src/main/java/org/apache/juneau/CoreApi.java
@@ -15,7 +15,7 @@ package org.apache.juneau;
/**
* Common super class for all core-API serializers, parsers, and serializer/parser groups.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Maintains an inner {@link ContextFactory} instance that can be used by serializer and parser subclasses
* to work with beans in a consistent way.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/FormattedException.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/FormattedException.java b/juneau-core/src/main/java/org/apache/juneau/FormattedException.java
index 7731f56..7dae895 100644
--- a/juneau-core/src/main/java/org/apache/juneau/FormattedException.java
+++ b/juneau-core/src/main/java/org/apache/juneau/FormattedException.java
@@ -25,7 +25,7 @@ public class FormattedException extends Exception {
* Constructor.
*
* @param message The {@link MessageFormat}-style message.
- * @param args The arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public FormattedException(String message, Object...args) {
super(args.length == 0 ? message : MessageFormat.format(message, args));
@@ -36,7 +36,7 @@ public class FormattedException extends Exception {
*
* @param causedBy The cause of this exception.
* @param message The {@link MessageFormat}-style message.
- * @param args The arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public FormattedException(Throwable causedBy, String message, Object...args) {
this(message, args);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/FormattedRuntimeException.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/FormattedRuntimeException.java b/juneau-core/src/main/java/org/apache/juneau/FormattedRuntimeException.java
index 8ee1f60..bf5e9d6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/FormattedRuntimeException.java
+++ b/juneau-core/src/main/java/org/apache/juneau/FormattedRuntimeException.java
@@ -25,7 +25,7 @@ public class FormattedRuntimeException extends RuntimeException {
* Constructor.
*
* @param message The {@link MessageFormat}-style message.
- * @param args The arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public FormattedRuntimeException(String message, Object...args) {
super(args.length == 0 ? message : MessageFormat.format(message, args));
@@ -36,7 +36,7 @@ public class FormattedRuntimeException extends RuntimeException {
*
* @param causedBy The cause of this exception.
* @param message The {@link MessageFormat}-style message.
- * @param args The arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public FormattedRuntimeException(Throwable causedBy, String message, Object...args) {
this(message, args);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/MediaRange.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/MediaRange.java b/juneau-core/src/main/java/org/apache/juneau/MediaRange.java
index 8ef60fd..376fdee 100644
--- a/juneau-core/src/main/java/org/apache/juneau/MediaRange.java
+++ b/juneau-core/src/main/java/org/apache/juneau/MediaRange.java
@@ -109,7 +109,7 @@ public final class MediaRange implements Comparable<MediaRange> {
/**
* Returns the media type enclosed by this media range.
*
- * <h6 class='topic'>Examples:</h6>
+ * <h5 class='section'>Examples:</h5>
* <ul>
* <li><js>"text/html"</js>
* <li><js>"text/*"</js>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/MediaType.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/MediaType.java b/juneau-core/src/main/java/org/apache/juneau/MediaType.java
index 6fa1819..4b54884 100644
--- a/juneau-core/src/main/java/org/apache/juneau/MediaType.java
+++ b/juneau-core/src/main/java/org/apache/juneau/MediaType.java
@@ -56,15 +56,17 @@ public final class MediaType {
* The same media type strings always return the same objects so that these objects
* can be compared for equality using '=='.
* <p>
- * Note: Spaces are replaced with <js>'+'</js> characters.
- * This gets around the issue where passing media type strings with <js>'+'</js> as HTTP GET parameters
- * get replaced with spaces by your browser. Since spaces aren't supported by the spec, this
- * is doesn't break anything.
- * <p>
- * Anything including and following the <js>';'</js> character is ignored (e.g. <js>";charset=X"</js>).
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>Spaces are replaced with <js>'+'</js> characters.
+ * This gets around the issue where passing media type strings with <js>'+'</js> as HTTP GET parameters
+ * get replaced with spaces by your browser. Since spaces aren't supported by the spec, this
+ * is doesn't break anything.
+ * <li>Anything including and following the <js>';'</js> character is ignored (e.g. <js>";charset=X"</js>).
+ * </ul>
*
* @param s - The media type string. Will be lowercased.
- * Returns <jk>null</jk> if input is null.
+ * <br>Returns <jk>null</jk> if input is null.
* @return A cached media type object.
*/
public static MediaType forString(String s) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/ObjectList.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ObjectList.java b/juneau-core/src/main/java/org/apache/juneau/ObjectList.java
index 908352c..d8526e8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ObjectList.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ObjectList.java
@@ -32,7 +32,7 @@ import org.apache.juneau.utils.*;
* constructor is provided for converting a JSON array string directly into a {@link List}. It also contains
* accessor methods for to avoid common typecasting when accessing elements in a list.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct an empty List</jc>
* List l = <jk>new</jk> ObjectList();
@@ -456,7 +456,7 @@ public class ObjectList extends LinkedList<Object> {
* <p>
* See {@link BeanSession#convertToType(Object, ClassMeta)} for a description of valid conversions.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Iterate over a list of ObjectMaps.</jc>
* ObjectList l = <jk>new</jk> ObjectList(<js>"[{foo:'bar'},{baz:123}]"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
index 5f54e5a..502189a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
@@ -36,7 +36,7 @@ import org.apache.juneau.utils.*;
* constructor is provided for converting a JSON object string directly into a {@link Map}. It also contains
* accessor methods for to avoid common typecasting when accessing elements in a list.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Construct an empty Map</jc>
* Map m = <jk>new</jk> ObjectMap();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java
index 00b111f..6829262 100644
--- a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java
+++ b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java
@@ -15,7 +15,7 @@ package org.apache.juneau;
/**
* Converts property names to dashed-lower-case format.
*
- * <h6 class='topic'>Examples:</h6>
+ * <h5 class='section'>Examples:</h5>
* <ul>
* <li><js>"fooBar"</js> -> <js>"foo-bar"</js>
* <li><js>"fooBarURL"</js> -> <js>"foo-bar-url"</js>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDefault.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDefault.java b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDefault.java
index e5b6f9a..1a64676 100644
--- a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDefault.java
+++ b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDefault.java
@@ -17,7 +17,7 @@ import java.beans.*;
/**
* Default property namer.
*
- * <h6 class='topic'>Examples:</h6>
+ * <h5 class='section'>Examples:</h5>
* <ul>
* <li><js>"fooBar"</js> -> <js>"fooBar"</js>
* <li><js>"fooBarURL"</js> -> <js>"fooBarURL"</js>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/Session.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/Session.java b/juneau-core/src/main/java/org/apache/juneau/Session.java
index 3edcf80..fe33eb2 100644
--- a/juneau-core/src/main/java/org/apache/juneau/Session.java
+++ b/juneau-core/src/main/java/org/apache/juneau/Session.java
@@ -101,7 +101,7 @@ public abstract class Session {
* Logs a warning message.
*
* @param msg The warning message.
- * @param args Optional printf arguments to replace in the error message.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public final void addWarning(String msg, Object... args) {
if (warnings == null)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/Visibility.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/Visibility.java b/juneau-core/src/main/java/org/apache/juneau/Visibility.java
index d536100..59f9fee 100644
--- a/juneau-core/src/main/java/org/apache/juneau/Visibility.java
+++ b/juneau-core/src/main/java/org/apache/juneau/Visibility.java
@@ -46,7 +46,7 @@ public enum Visibility {
/**
* Identifies if the specified mod matches this visibility.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <code>
* <jsf>PUBLIC</jsf>.isVisible(MyPublicClass.<jk>class</jk>.getModifiers()); <jc>//true</jk>
* <jsf>PUBLIC</jsf>.isVisible(MyPrivateClass.<jk>class</jk>.getModifiers()); <jc>//false</jk>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
index 03c2bd3..63ae64f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
@@ -51,7 +51,7 @@ public @interface Bean {
* a simple name/value mapping of names to classes.
* Names do not need to be universally unique. However, they must be unique within a dictionary.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@Bean</ja>(typeName=<js>"foo"</js>)
* <jk>public class</jk> Foo {
@@ -98,7 +98,7 @@ public @interface Bean {
* <p>
* This annotation is an alternative to using the {@link BeanFilter} class with an implemented {@link BeanFilter#getProperties()} method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Address class with only street/city/state properties (in that order).</jc>
* <jc>// All other properties are ignored.</jc>
@@ -132,7 +132,7 @@ public @interface Bean {
* <p>
* This annotation is an alternative to using the {@link BeanFilter} class with an implemented {@link BeanFilter#getExcludeProperties()} method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Address class with only street/city/state properties (in that order).</jc>
* <jc>// All other properties are ignored.</jc>
@@ -152,7 +152,7 @@ public @interface Bean {
* <p>
* This annotation is an alternative to using the {@link BeanFilter} class with an implemented {@link BeanFilter#getPropertyNamer()} method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Define a class with dashed-lowercase property names.</jc>
* <ja>@Bean</ja>(propertyNamer=PropertyNamerDashedLC.<jk>class</jk>)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java b/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
index 3e4cc76..10e4919 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
@@ -67,7 +67,7 @@ public @interface BeanProperty {
* <p>
* This property must denote a concrete bean class with a no-arg constructor.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> MyBean {
*
@@ -84,7 +84,7 @@ public @interface BeanProperty {
* the class types of the contents of the bean property object when the generic parameter
* types are interfaces or abstract classes.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> MyBean {
*
@@ -106,7 +106,7 @@ public @interface BeanProperty {
* Typically used for rendering {@link Date Dates} and {@link Calendar Calendars}
* as a particular string format.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> MyClass {
*
@@ -129,7 +129,7 @@ public @interface BeanProperty {
* <li>Bean/Map collections - Same, but applied to each element in the collection.
* </ul>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jk>public class</jk> MyClass {
*
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/annotation/Consumes.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Consumes.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Consumes.java
index 30c588e..867db1c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Consumes.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Consumes.java
@@ -22,7 +22,7 @@ import org.apache.juneau.parser.*;
/**
* Annotation used on subclasses of {@link Parser} to identify the media types that it consumes.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Provides a way to define the contents of {@link Parser#getMediaTypes()} through an annotation.
* <p>
@@ -31,7 +31,7 @@ import org.apache.juneau.parser.*;
* It should be noted that this annotation is optional and that the {@link Parser#getMediaTypes()} method can
* be overridden by subclasses to return the media types programmatically.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* Standard example:
* <p class='bcode'>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
index 6180de4..0f0e821 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
@@ -38,7 +38,7 @@ public @interface Pojo {
* <li>Any other class. Will get interpreted as a {@link SurrogateSwap}.
* </ul>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* In this case, a swap is being applied to a bean that will force it to be serialized as a <code>String</code>
* <p class='bcode'>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/annotation/Produces.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Produces.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Produces.java
index d4c77fb..2361734 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Produces.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Produces.java
@@ -22,7 +22,7 @@ import org.apache.juneau.serializer.*;
/**
* Annotation used on subclasses of {@link Serializer} to identify the media types that it produces.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Provides a way to define the contents of {@link Serializer#getMediaTypes()} through an annotation.
* <p>
@@ -31,7 +31,7 @@ import org.apache.juneau.serializer.*;
* It should be noted that this annotation is optional and that the {@link Serializer#getMediaTypes()} method can
* be overridden by subclasses to return the media types programmatically.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* Standard example:
* <p class='bcode'>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/annotation/URI.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/URI.java b/juneau-core/src/main/java/org/apache/juneau/annotation/URI.java
index 45769f6..7e7c0ad 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/URI.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/URI.java
@@ -34,7 +34,7 @@ import org.apache.juneau.serializer.*;
* <p>
* This annotation can be applied to classes, interfaces, or bean property methods for fields.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
*
* <jc>// Applied to a class whose toString() method returns a URI.</jc>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
index 6a0bc5d..5a57e52 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
@@ -47,7 +47,7 @@ import org.apache.juneau.xml.annotation.*;
* <p>
* Only 2-dimentional POJOs (arrays or collections of maps or beans) can be serialized to Cognos.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* The construct shown above is a serialized <code>AddressBook</code> object which is a subclass of <code>LinkedList<Person></code>.
* The code for generating the XML is as follows...
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/JsonType.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/JsonType.java b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/JsonType.java
index ed7da4a..3beae9e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/JsonType.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/JsonType.java
@@ -19,7 +19,7 @@ package org.apache.juneau.dto.jsonschema;
* that override the default serialization/parsing behavior of <code>Enum</code> types
* so that they are represented in lowercase form (as per the specification).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* // Produces 'number', not 'NUMBER'.
* String json = JsonSerializer.DEFAULT.serialize(JsonType.NUMBER);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Contact.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Contact.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Contact.java
index 7e9115b..2996c19 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Contact.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Contact.java
@@ -17,7 +17,7 @@ import org.apache.juneau.annotation.*;
/**
* Contact information for the exposed API.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"name"</js>: <js>"API Support"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
index 01bd5d6..0c03be9 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
@@ -17,7 +17,7 @@ import org.apache.juneau.annotation.*;
/**
* Allows referencing an external resource for extended documentation.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"description"</js>: <js>"Find more info here"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
index 11b8d0c..9dad31f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
@@ -21,7 +21,7 @@ import org.apache.juneau.json.*;
/**
* Describes a single HTTP header.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"description"</js>: <js>"The number of allowed requests in the current period"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Info.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Info.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Info.java
index 31325bb..4041cc9 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Info.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Info.java
@@ -17,7 +17,7 @@ import org.apache.juneau.annotation.*;
/**
* The object provides metadata about the API. The metadata can be used by the clients if needed, and can be presented in the Swagger-UI for convenience.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"title"</js>: <js>"Swagger Sample App"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
index 38b465c..91afdaf 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Items.java
@@ -21,7 +21,7 @@ import org.apache.juneau.json.*;
/**
* A limited subset of JSON-Schema's items object. It is used by parameter definitions that are not located in "body".
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"type"</js>: <js>"string"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/License.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/License.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/License.java
index 3b5ad8a..fdd8f27 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/License.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/License.java
@@ -17,7 +17,7 @@ import org.apache.juneau.annotation.*;
/**
* License information for the exposed API.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"name"</js>: <js>"Apache 2.0"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Operation.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Operation.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Operation.java
index 28b031a..cc0fbe9 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Operation.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Operation.java
@@ -20,7 +20,7 @@ import org.apache.juneau.annotation.*;
/**
* Describes a single API operation on a path.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"tags"</js>: [
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
index 68125aa..a95081e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
@@ -19,7 +19,7 @@ import org.apache.juneau.annotation.*;
/**
* Describes a single response from an API Operation.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"description"</js>: <js>"A complex object array response"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
index 90979d7..d3d8c36 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
@@ -23,7 +23,7 @@ import org.apache.juneau.json.*;
* <p>
* Supported schemes are basic authentication, an API key (either as a header or as a query parameter) and OAuth2's common flows (implicit, password, application and access code).
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Basic authentication sample</jc>
* {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Tag.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Tag.java b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Tag.java
index dba2be3..fe5f979 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Tag.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/swagger/Tag.java
@@ -19,7 +19,7 @@ import org.apache.juneau.annotation.*;
* <p>
* It is not mandatory to have a Tag Object per tag used there.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* {
* <js>"name"</js>: <js>"pet"</js>,
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/encoders/Encoder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/encoders/Encoder.java b/juneau-core/src/main/java/org/apache/juneau/encoders/Encoder.java
index ef9cb63..6f7c488 100644
--- a/juneau-core/src/main/java/org/apache/juneau/encoders/Encoder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/encoders/Encoder.java
@@ -17,7 +17,7 @@ import java.io.*;
/**
* Used for enabling decompression on requests and compression on responses, such as support for GZIP compression.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Used to wrap input and output streams withing compression/decompression streams.
* <p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroup.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroup.java b/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroup.java
index 3cb2050..a40a93a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroup.java
+++ b/juneau-core/src/main/java/org/apache/juneau/encoders/EncoderGroup.java
@@ -24,7 +24,7 @@ import org.apache.juneau.serializer.*;
/**
* Represents the group of {@link Encoder encoders} keyed by codings.
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Maintains a set of encoders and the codings that they can handle.
* <p>
@@ -42,7 +42,7 @@ import org.apache.juneau.serializer.*;
* For example, calling <code>g.append(E1.<jk>class</jk>,E2.<jk>class</jk>).append(E3.<jk>class</jk>,E4.<jk>class</jk>)</code>
* will result in the order <code>E3, E4, E1, E2</code>.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Create an encoder group with support for gzip compression.</jc>
* EncoderGroup g = <jk>new</jk> EncoderGroup().append(GzipEncoder.<jk>class</jk>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index de30779..ce1ec10 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -24,18 +24,18 @@ import org.apache.juneau.serializer.*;
/**
* Serializes POJOs to HTTP responses as HTML documents.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/html</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/html</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Same as {@link HtmlSerializer}, except wraps the response in <code><xt><html></code>, <code><xt><head></code>,
* and <code><xt><body></code> tags so that it can be rendered in a browser.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
index 64e1009..64d8e3a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlDocSerializerContext.java
@@ -22,7 +22,7 @@ import org.apache.juneau.*;
* These are typically specified via <ja>@RestResource.properties()</ja> and <ja>@RestMethod.properties()</ja> annotations,
* although they can also be set programmatically via the <code>RestResponse.setProperty()</code> method.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <ja>@RestResource</ja>(
* messages=<js>"nls/AddressBookResource"</js>,
@@ -87,13 +87,13 @@ import org.apache.juneau.*;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* <ul>
- * <li class='c'><a class='doclink' href='../html/HtmlSerializerContext.html#ConfigProperties'>HtmlSerializerContext</a> - Configurable properties on the HTML serializer.
+ * <li class='c'><a class="doclink" href="../html/HtmlSerializerContext.html#ConfigProperties">HtmlSerializerContext</a> - Configurable properties on the HTML serializer.
* </ul>
* </ul>
* </ul>
@@ -111,7 +111,7 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext {
* </ul>
* <p>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* The <code>AddressBookResource</code> sample class uses this property...
* </p>
@@ -148,7 +148,7 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext {
* </ul>
* <p>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* The <code>AddressBookResource</code> sample class uses this property...
* </p>
@@ -196,7 +196,7 @@ public final class HtmlDocSerializerContext extends HtmlSerializerContext {
* Absolute (<js>"/myOtherContext/foo"</js>) and fully-qualified (<js>"http://localhost2/foo"</js>) URLs
* can also be used.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p>
* The <code>AddressBookResource</code> sample class uses this property...
* </p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
index 27ff24f..1242265 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
@@ -32,17 +32,17 @@ import org.apache.juneau.xml.*;
/**
* Parses text generated by the {@link HtmlSerializer} class back into a POJO model.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Content-Type</code> types: <code>text/html</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* See the {@link HtmlSerializer} class for a description of the HTML generated.
* <p>
* This class is used primarily for automated testing of the {@link HtmlSerializer} class.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -537,20 +537,19 @@ public final class HtmlParser extends XmlParser {
@Override /* Parser */
protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
HtmlParserSession s = (HtmlParserSession)session;
- type = s.normalizeClassMeta(type);
return parseAnything(s, type, s.getXmlStreamReader(), s.getOuter(), true, null);
}
@Override /* ReaderParser */
protected <K,V> Map<K,V> doParseIntoMap(ParserSession session, Map<K,V> m, Type keyType, Type valueType) throws Exception {
HtmlParserSession s = (HtmlParserSession)session;
- return parseIntoMap(s, s.getXmlStreamReader(), m, s.getClassMeta(keyType), s.getClassMeta(valueType), null);
+ return parseIntoMap(s, s.getXmlStreamReader(), m, (ClassMeta<K>)s.getClassMeta(keyType), (ClassMeta<V>)s.getClassMeta(valueType), null);
}
@Override /* ReaderParser */
protected <E> Collection<E> doParseIntoCollection(ParserSession session, Collection<E> c, Type elementType) throws Exception {
HtmlParserSession s = (HtmlParserSession)session;
- return parseIntoCollection(s, s.getXmlStreamReader(), c, s.getClassMeta(elementType), null);
+ return parseIntoCollection(s, s.getXmlStreamReader(), c, (ClassMeta<E>)s.getClassMeta(elementType), null);
}
@Override /* ReaderParser */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java
index a362bdc..2a1eca6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java
@@ -38,11 +38,11 @@ import org.apache.juneau.xml.*;
* <p>
* None.
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../parser/ParserContext.html#ConfigProperties'>ParserContext</a> - Configurable properties common to all parsers.
+ * <li class='c'><a class="doclink" href="../parser/ParserContext.html#ConfigProperties">ParserContext</a> - Configurable properties common to all parsers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
index 1c481f5..4d46043 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
@@ -26,13 +26,13 @@ import org.apache.juneau.transform.*;
/**
* Serializes POJO metamodels to HTML.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/html+schema</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/html</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Essentially the same as {@link HtmlSerializer}, except serializes the POJO metamodel
* instead of the model itself.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 8828409..996333b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -29,13 +29,13 @@ import org.apache.juneau.xml.annotation.*;
/**
* Serializes POJO models to HTML.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/html</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/html</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* The conversion is as follows...
* <ul class='spaced-list'>
@@ -50,7 +50,7 @@ import org.apache.juneau.xml.annotation.*;
* <p>
* The {@link HtmlLink} annotation can be used on beans to add hyperlinks to the output.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul class='spaced-list'>
@@ -65,7 +65,7 @@ import org.apache.juneau.xml.annotation.*;
* <li>{@link SqReadable} - Default serializer, single quotes, whitespace added.
* </ul>
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jc>// Use one of the default serializers to serialize a POJO</jc>
* String html = HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(someObject);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
index 59be25e..2179a5e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
@@ -67,11 +67,11 @@ import org.apache.juneau.xml.*;
* </tr>
* </table>
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../serializer/SerializerContext.html#ConfigProperties'>SerializerContext</a> - Configurable properties common to all serializers.
+ * <li class='c'><a class="doclink" href="../serializer/SerializerContext.html#ConfigProperties">SerializerContext</a> - Configurable properties common to all serializers.
* </ul>
* </ul>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
index a1c2495..168b648 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
@@ -21,13 +21,13 @@ import org.apache.juneau.serializer.*;
/**
* Serializes POJOs to HTTP responses as stripped HTML.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>text/html+stripped</code>
* <p>
* Produces <code>Content-Type</code> types: <code>text/html</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Produces the same output as {@link HtmlDocSerializer}, but without the header and body tags and page title and description.
* Used primarily for JUnit testing the {@link HtmlDocSerializer} class.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/html/SimpleHtmlWriter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/SimpleHtmlWriter.java b/juneau-core/src/main/java/org/apache/juneau/html/SimpleHtmlWriter.java
index acc069c..2ae07f8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/SimpleHtmlWriter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/SimpleHtmlWriter.java
@@ -17,7 +17,7 @@ import java.io.*;
/**
* Utility class for creating custom HTML.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* String table = <jk>new</jk> SimpleHtmlWriter().sTag(<js>"table"</js>).sTag(<js>"tr"</js>).sTag(<js>"td"</js>).append(<js>"hello"</js>).eTag(<js>"td"</js>).eTag(<js>"tr"</js>).eTag(<js>"table"</js>).toString();
* </p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
index 7ae2f3e..70006c6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFile.java
@@ -355,7 +355,7 @@ public abstract class ConfigFile implements Map<String,Section> {
* <p>
* <js>"M"</js> and <js>"K"</js> can be used to identify millions and thousands.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <ul class='spaced-list'>
* <li><code><js>"100K"</js> => 1024000</code>
* <li><code><js>"100M"</js> => 104857600</code>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/ini/ConfigMgr.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigMgr.java b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigMgr.java
index d65e95f..7188624 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigMgr.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigMgr.java
@@ -28,7 +28,7 @@ import org.apache.juneau.utils.*;
/**
* Manager for retrieving shared instances of {@link ConfigFile ConfigFiles}.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* ConfigFile cf = ConfigMgr.<jsf>DEFAULT</jsf>.get(<js>"MyConfig.cfg"</js>);
* String setting = cf.get(<js>"MySection/mysetting"</js>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java b/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
index fc063bc..cc4b2a2 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/ClassUtils.java
@@ -63,7 +63,7 @@ public final class ClassUtils {
/**
* Converts the specified class name to a readable form when class name is a special construct like <js>"[[Z"</js>.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* <jsm>getReadableClassName</jsm>(<js>"java.lang.Object"</js>); <jc>// Returns "java.lang.Object"</jc>
* <jsm>getReadableClassName</jsm>(<js>"boolean"</js>); <jc>// Returns "boolean"</jc>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/internal/IdentityList.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/IdentityList.java b/juneau-core/src/main/java/org/apache/juneau/internal/IdentityList.java
index 01c87a5..b3db4ba 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/IdentityList.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/IdentityList.java
@@ -21,8 +21,10 @@ import java.util.*;
* <li>Order of insertion maintained.
* </ul>
* <p>
- * Note: This class is NOT thread safe, and is intended for use on small lists.
- *
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This class is NOT thread safe, and is intended for use on small lists.
+ * </ul>
* @param <T> Entry type.
*/
public class IdentityList<T> extends LinkedList<T> {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java b/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
index 87bb07b..b2a1e29 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
@@ -97,10 +97,10 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#SEVERE} level.
- *
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#SEVERE} level.
+ *
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void severe(String msg, Object...args) {
if (isLoggable(SEVERE))
@@ -108,10 +108,10 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#WARNING} level.
- *
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#WARNING} level.
+ *
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void warning(String msg, Object...args) {
if (isLoggable(WARNING))
@@ -119,10 +119,10 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#INFO} level.
- *
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#INFO} level.
+ *
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void info(String msg, Object...args) {
if (isLoggable(INFO))
@@ -130,10 +130,10 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#CONFIG} level.
- *
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#CONFIG} level.
+ *
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void config(String msg, Object...args) {
if (isLoggable(CONFIG))
@@ -141,10 +141,10 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINE} level.
- *
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINE} level.
+ *
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void fine(String msg, Object...args) {
if (isLoggable(FINE))
@@ -152,10 +152,10 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINER} level.
- *
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINER} level.
+ *
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void finer(String msg, Object...args) {
if (isLoggable(FINER))
@@ -163,10 +163,10 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINEST} level.
- *
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINEST} level.
+ *
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void finest(String msg, Object...args) {
if (isLoggable(FINEST))
@@ -174,7 +174,7 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs an exception as {@link Level#SEVERE} level.
+ * Logs an exception as {@link Level#SEVERE} level.
*
* @param t The Throwable object to log.
*/
@@ -184,7 +184,7 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs an exception as {@link Level#WARNING} level.
+ * Logs an exception as {@link Level#WARNING} level.
*
* @param t The Throwable object to log.
*/
@@ -194,11 +194,11 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#SEVERE} level.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#SEVERE} level.
*
* @param t The Throwable object associated with the event that needs to be logged.
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void severe(Throwable t, String msg, Object...args) {
if (isLoggable(SEVERE))
@@ -206,11 +206,11 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#WARNING} level.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#WARNING} level.
*
* @param t The Throwable object associated with the event that needs to be logged.
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void warning(Throwable t, String msg, Object...args) {
if (isLoggable(WARNING))
@@ -218,35 +218,35 @@ public class JuneauLogger extends java.util.logging.Logger {
}
/**
- * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#INFO} level.
+ * Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#INFO} level.
*
* @param t The Throwable object associated with the event that needs to be logged.
- * @param msg The message to log.
- * @param args The {@link MessageFormat}-style arguments.
+ * @param msg The message to log.
+ * @param args Optional {@link MessageFormat}-style arguments.
*/
public void info(Throwable t, String msg, Object...args) {
if (isLoggable(INFO))
log(INFO, getMessage(msg, args), t);
}
- @Override /* Logger */
+ @Override /* Logger */
public void log(LogRecord record) {
- innerLogger.log(record);
- }
+ innerLogger.log(record);
+ }
- @Override /* Logger */
+ @Override /* Logger */
public boolean isLoggable(Level level) {
- return innerLogger.isLoggable(level);
- }
+ return innerLogger.isLoggable(level);
+ }
/**
- * Similar to {@link #log(Level, String, Object[])}, except arguments are converted to objects
- * that are serialized using the {@link JsonSerializer#toStringObject(Object)} method.
- * This allows arbitrary POJOs to be serialized as message parameters.
+ * Similar to {@link #log(Level, String, Object[])}, except arguments are converted to objects
+ * that are serialized using the {@link JsonSerializer#toStringObject(Object)} method.
+ * This allows arbitrary POJOs to be serialized as message parameters.
*
* @param level The level of the given message.
- * @param msg The message to log.
- * @param args The POJO arguments.
+ * @param msg The message to log.
+ * @param args The POJO arguments.
*/
public void logObjects(Level level, String msg, Object...args) {
if (isLoggable(level)) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java b/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
index 8fd3928..0831df4 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -453,7 +453,7 @@ public final class StringUtils {
* Splits a character-delimited string into a string array.
* Does not split on escaped-delimiters (e.g. "\,");
* Resulting tokens are trimmed of whitespace.
- * NOTE: This behavior is different than the Jakarta equivalent.
+ * <b>NOTE:</b> This behavior is different than the Jakarta equivalent.
* split("a,b,c",',') -> {"a","b","c"}
* split("a, b ,c ",',') -> {"a","b","c"}
* split("a,,c",',') -> {"a","","c"}
@@ -783,7 +783,7 @@ public final class StringUtils {
/**
* Generated a random UUID with the specified number of characters.
* Characters are composed of lower-case ASCII letters and numbers only.
- * This method conforms to the restrictions for hostnames as specified in <a href='https://tools.ietf.org/html/rfc952'>RFC 952</a>
+ * This method conforms to the restrictions for hostnames as specified in <a class="doclink" href="https://tools.ietf.org/html/rfc952">RFC 952</a>
* Since each character has 36 possible values, the square approximation formula for
* the number of generated IDs that would produce a 50% chance of collision is:
* <code>sqrt(36^N)</code>.
@@ -918,7 +918,7 @@ public final class StringUtils {
/**
* Returns <jk>true</jk> if the specified path string is prefixed with the specified prefix.
*
- * <h6 class='topic'>Example:</h6>
+ * <h5 class='section'>Example:</h5>
* <p class='bcode'>
* pathStartsWith(<js>"foo"</js>, <js>"foo"</js>); <jc>// true</jc>
* pathStartsWith(<js>"foo/bar"</js>, <js>"foo"</js>); <jc>// true</jc>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/ThrowableUtils.java b/juneau-core/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
index 4f87f22..84d6f19 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/ThrowableUtils.java
@@ -24,7 +24,7 @@ public class ThrowableUtils {
*
* @param o The object to check.
* @param msg The message of the IllegalArgumentException.
- * @param args {@link MessageFormat}-style arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @throws IllegalArgumentException
*/
public static void assertNotNull(Object o, String msg, Object...args) throws IllegalArgumentException {
@@ -60,7 +60,7 @@ public class ThrowableUtils {
* Shortcut for calling <code><jk>new</jk> IllegalArgumentException(MessageFormat.<jsm>format</jsm>(msg, args));</code>
*
* @param msg The message of the IllegalArgumentException.
- * @param args {@link MessageFormat}-style arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @throws IllegalArgumentException
*/
public static void illegalArg(String msg, Object...args) throws IllegalArgumentException {
@@ -72,7 +72,7 @@ public class ThrowableUtils {
*
* @param threadId The ID of the thread to compare against.
* @param msg The message of the IllegalStateException.
- * @param args {@link IllegalStateException}-style arguments in the message.
+ * @param args Optional {@link MessageFormat}-style arguments.
* @throws IllegalStateException
*/
public static void assertSameThread(long threadId, String msg, Object...args) throws IllegalStateException {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java b/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java
index 665d0ab..88cc42b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java
@@ -21,7 +21,7 @@ import org.apache.juneau.parser.*;
/**
* Parses POJOs from HTTP responses as Java {@link ObjectInputStream ObjectInputStreams}.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Consumes <code>Content-Type</code> types: <code>application/x-java-serialized-object</code>
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java b/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java
index 02716b4..1e1e8e8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java
@@ -20,7 +20,7 @@ import org.apache.juneau.serializer.*;
/**
* Serializes POJOs to HTTP responses as Java {@link ObjectOutputStream ObjectOutputStreams}.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>application/x-java-serialized-object</code>
* <p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
index da204bc..0086a78 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
@@ -28,11 +28,11 @@ import org.apache.juneau.transform.*;
/**
* Parses any valid JSON text into a POJO model.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Content-Type</code> types: <code>application/json, text/json</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* This parser uses a state machine, which makes it very fast and efficient. It parses JSON in about 70% of the
* time that it takes the built-in Java DOM parsers to parse equivalent XML.
@@ -50,7 +50,7 @@ import org.apache.juneau.transform.*;
* This parser handles the following input, and automatically returns the corresponding Java class.
* <ul class='spaced-list'>
* <li> JSON objects (<js>"{...}"</js>) are converted to {@link ObjectMap ObjectMaps}. <br>
- * Note: If a <code><xa>_type</xa>=<xs>'xxx'</xs></code> attribute is specified on the object, then an attempt is made to convert the object
+ * <b>Note:</b> If a <code><xa>_type</xa>=<xs>'xxx'</xs></code> attribute is specified on the object, then an attempt is made to convert the object
* to an instance of the specified Java bean class. See the classProperty setting on the {@link ContextFactory} for more information
* about parsing beans from JSON.
* <li> JSON arrays (<js>"[...]"</js>) are converted to {@link ObjectList ObjectLists}.
@@ -77,7 +77,7 @@ import org.apache.juneau.transform.*;
* TIP: If you know you're parsing a JSON object or array, it can be easier to parse it using the {@link ObjectMap#ObjectMap(CharSequence) ObjectMap(CharSequence)}
* or {@link ObjectList#ObjectList(CharSequence) ObjectList(CharSequence)} constructors instead of using this class. The end result should be the same.
*
- * <h6 class='topic'>Configurable properties</h6>
+ * <h5 class='section'>Configurable properties:</h5>
* <p>
* This class has the following properties associated with it:
* <ul>
@@ -786,7 +786,6 @@ public final class JsonParser extends ReaderParser {
@Override /* Parser */
protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
JsonParserSession s = (JsonParserSession)session;
- type = s.normalizeClassMeta(type);
ParserReader r = s.getReader();
if (r == null)
return null;
@@ -799,7 +798,7 @@ public final class JsonParser extends ReaderParser {
protected <K,V> Map<K,V> doParseIntoMap(ParserSession session, Map<K,V> m, Type keyType, Type valueType) throws Exception {
JsonParserSession s = (JsonParserSession)session;
ParserReader r = s.getReader();
- m = parseIntoMap2(s, r, m, s.getClassMeta(keyType), s.getClassMeta(valueType), null);
+ m = parseIntoMap2(s, r, m, (ClassMeta<K>)s.getClassMeta(keyType), (ClassMeta<V>)s.getClassMeta(valueType), null);
validateEnd(s, r);
return m;
}
@@ -808,7 +807,7 @@ public final class JsonParser extends ReaderParser {
protected <E> Collection<E> doParseIntoCollection(ParserSession session, Collection<E> c, Type elementType) throws Exception {
JsonParserSession s = (JsonParserSession)session;
ParserReader r = s.getReader();
- c = parseIntoCollection2(s, r, c, s.getClassMeta(elementType), null);
+ c = parseIntoCollection2(s, r, c, (ClassMeta<E>)s.getClassMeta(elementType), null);
validateEnd(s, r);
return c;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/json/JsonParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonParserContext.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonParserContext.java
index f397af9..360a743 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonParserContext.java
@@ -36,13 +36,13 @@ import org.apache.juneau.parser.*;
*
* <h6 class='topic' id='ConfigProperties'>Configurable properties on the JSON parser</h6>
* <p>
- * None.
+ * None.
*
- * <h6 class='topic'>Configurable properties inherited from parent classes</h6>
+ * <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
- * <li class='c'><a class='doclink' href='../BeanContext.html#ConfigProperties'>BeanContext</a> - Properties associated with handling beans on serializers and parsers.
+ * <li class='c'><a class="doclink" href="../BeanContext.html#ConfigProperties">BeanContext</a> - Properties associated with handling beans on serializers and parsers.
* <ul>
- * <li class='c'><a class='doclink' href='../parser/ParserContext.html#ConfigProperties'>ParserContext</a> - Configurable properties common to all parsers.
+ * <li class='c'><a class="doclink" href="../parser/ParserContext.html#ConfigProperties">ParserContext</a> - Configurable properties common to all parsers.
* </ul>
* </ul>
*/
@@ -63,6 +63,6 @@ public final class JsonParserContext extends ParserContext {
public ObjectMap asMap() {
return super.asMap()
.append("JsonParserContext", new ObjectMap()
- );
+ );
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30dd3b93/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index 4b2b6d1..8826b29 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -25,13 +25,13 @@ import org.apache.juneau.transform.*;
/**
* Serializes POJO metadata to HTTP responses as JSON.
*
- * <h6 class='topic'>Media types</h6>
+ * <h5 class='section'>Media types:</h5>
* <p>
* Handles <code>Accept</code> types: <code>application/json+schema, text/json+schema</code>
* <p>
* Produces <code>Content-Type</code> types: <code>application/json</code>
*
- * <h6 class='topic'>Description</h6>
+ * <h5 class='section'>Description:</h5>
* <p>
* Produces the JSON-schema for the JSON produced by the {@link JsonSerializer} class with the same properties.
*/