5.1.0.0 (Jan 18, 2014)

Juno 5.1.0.0 is a major update.

##### Major changes

- Brand new REST client API that uses Apache HttpClient for HTTP communication.
  The new client API is simply a thin layer on top of HttpClient that performs serialization and parsing using Juno parsers, but leaves all the details of the HTTP connection to the Apache code.
  See the {@del org.apache.juneau.rest.client} package for details.
- New org.apache.juneau.rest.client.jazz package and org.apache.juneau.rest.client.jazz.JazzRestClient class for performing REST operations against Jazz servers.
  Includes improved support for FORM authentication, and better SSL certificate validation.
- Completely redesigned URL-Encoding support.
  See {@del org.apache.juneau.urlencoding} package for details.
- Changes to Parser API.
  - Removal of ExtendedReaderParser abstract class and moved methods into {@link oaj.parser.ReaderParser} class.
  - Removal of DataFormat class from API since it was no longer necessary due to API change above.
  - Removal of ParserStringReader class.
    This was a reader optimized to work with String input.
    However, it could interfere with garbage collection of the original string object.
    Instead, the existing {@link oaj.parser.ParserReader} was enhanced to work well with String input, and tests show no significant performance differences.
  - New org.apache.juneau.parser.Parser.parse(Object,int,ClassMeta) convenience method added.

##### Other changes

- Various new methods added to {@link oaj.internal.StringUtils} and {@link oaj.internal.ClassUtils}.
- Improved support on {@del BeanContext#getClassMetaFromString(String)}.
  Now supports resolving "long[]", and so forth.
- {@del ResourceDescription} name parameter is now automatically URL-encoded in links.
- {@link oajr.RestRequest} now correctly handles cases involving URL-encoded characters in the path info portion of URLs (e.g. http://host/contextRoot/foo%2Fbar).
- Removed lazy-initialization that required locking in {@link oaj.ClassMeta}.
- New BeanContext.setDefaultParser(ReaderParser) method added for specifying a default parser to use in a bean context (used when converting beans to Strings using {@del BeanContext#convertToType(Object,Class)}. Old behavior simply used the default JSON serializer in these cases.
- More consistent handling of exceptions across all parsers.
- Minor changes to {@link oajr.RestRequest} class.
  - Changed the order of parameters on {@del RestRequest#getParameter(String,Class)}.
  - Added RestRequest.getMapParameter(String,Class,Class,Class) and RestRequest.getCollectionParameter(String,Class,Class)} methods.