5.0.0.34 (Nov 10, 2013)

Juno 5.0.0.34 is a moderate update.

- New support for runtime-replaced variables in REST resource properties:

  @RestResource( messages="nls/Messages", properties={ @Property(name="label",value="$L{servletTitle}"), // Localized variable in Messages.properties @Property(name="javaVendor",value="$S{java.vendor}"), // System property @Property(name="foo",value="bar"), @Property(name="bar",value="baz"), @Property(name="v1",value="$R{foo}"), // Request variable. value="bar" @Property(name="v2",value="$R{$R{foo}}") // Nested request variable. value="baz" } )

  See `RestServlet.createRequestVarResolver(RestRequest)` for more information.
- Eliminated @Property.type annotation which was the old way of specifying NLS variables that got resolved at runtime.
- New methods on {@link oajr.RestRequest}:
  - `RestRequest.getVarResolver()`
  - `RestRequest.getServletURI()`
  - `RestRequest.getRequestParentURI()`
- New methods on {@link oajr.RestResponse}:
  - `RestResponse.sendRedirect(CharSequence)`
- New methods on {@link oajr.RestServlet} that allow easier customization by subclasses:
  - `RestServlet.createConfigFactory()`
  - `RestServlet.createConverters()`
  - `RestServlet.createDefaultRequestHeaders()`
  - `RestServlet.createDefaultResponseHeaders()`
  - `RestServlet.createEncoders()`
  - `RestServlet.createFilters()`
  - `RestServlet.createGuards()`
  - `RestServlet.createMimetypesFileTypeMap()`
  - `RestServlet.createParsers()`
  - `RestServlet.createProperties()`
  - `RestServlet.createRequestProperties(ObjectMap,RestRequest)`
  - `RestServlet.createRequestVarResolver(RestRequest)`
  - `RestServlet.createSerializers()`
  - `RestServlet.createUrlEncodingParser()`
- Changed `RestServletNls` to use `ResourceDescription/MethodDescription` instead of `RestResource/RestMethod`
- New property `RestServletProperties.REST_htDocsFolder`.
  New support for serving up static documents from classpath through REST interface.
- Exception APIs now use {@link java.text.MessageFormat} (e.g. "{0}") for message variables instead of "%s".
- New {@link oaj.annotation.Bean#stopClass @Bean.stopClass} annotation for specifying stop classes for bean properties.
- New `BeanFilter.setStopClass(Class)` which is the program equivalent to the annotation above.
- New methods on {@link oaj.dto.ResultSetList}:
  - `ResultSetList.handleBlob(Blob)`
  - `ResultSetList.handleClob(Clob)`