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 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 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 StringUtils and ClassUtils.
- Improved support on BeanContext.getClassMetaFromString(String).
  Now supports resolving "long[]", and so forth.
- ResourceDescriptionname 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 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 RestRequest.getParameter(String,Class).
  - Added RestRequest.getMapParameter(String,Class,Class,Class) and RestRequest.getCollectionParameter(String,Class,Class)} methods.