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}:
  - {@del RestRequest#getVarResolver()}
  - {@del RestRequest#getServletURI()}
  - {@del RestRequest#getRequestParentURI()}
- New methods on {@link oajr.RestResponse}:
  - RestResponse.sendRedirect(CharSequence)
- New methods on {@del oajr.RestServlet} that allow easier customization by subclasses:
  - {@del RestServlet#createConfigFactory()}
  - {@del RestServlet#createConverters()}
  - {@del RestServlet#createDefaultRequestHeaders()}
  - {@del RestServlet#createDefaultResponseHeaders()}
  - {@del RestServlet#createEncoders()}
  - {@del RestServlet#createFilters()}
  - {@del RestServlet#createGuards()}
  - {@del RestServlet#createMimetypesFileTypeMap()}
  - {@del RestServlet#createParsers()}
  - {@del RestServlet#createProperties()}
  - {@del RestServlet#createRequestProperties(ObjectMap,RestRequest)}
  - {@del RestServlet#createRequestVarResolver(RestRequest)}
  - {@del RestServlet#createSerializers()}
  - {@del 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 {@del 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)