Skip to main content

Release 5.1.0.11

Date: Feb 14, 2015

Juno 5.1.0.11 is a moderate update.

Core

  • Additions to @Html bean annotation.

    • New @Html(noTables) annotation that prevents arrays/Collections from being serialized as tables.
    • New @Html(noTableHeaders) annotation that prevents HTML tables from having header rows.
  • Several improvements to URL-Encoding support.

    • Improved whitespace handling in UonParser.
    • New UonParserContext.UON_whitespaceAware property for controlling whether whitespace is ignored.
    • New UrlEncodingContext.URLENC_expandedParams property for controlling whether arrays/Collections should be serialized/parsed as multi-part parameters.
    • New @UrlEncoding(expandedParams) annotation that specifies that bean properties of type array/Collection be serialized as multi-part parameters (e.g. &key=val1&key=val2).
  • New JsonSerializerContext.JSON_escapeSolidus property for controlling whether slash characters should be escaped.

  • New TeeOutputStream and TeeWriter classes.

  • New ClassMeta.isInstance(Object) method.

  • Performance improvements when using the BeanMap.add(String,Object) method. Array properties are stored in a temporary list cache until BeanMap.getBean() is called.

  • New BeanPropertyMeta.add(BeanMap,Object) method for adding values to Collection and array properties.

  • Config INI files now support keys with name "*".

Server

  • REST method parameters can now be generic types (e.g. @Param("foo") Map<String,Integer> foo). This applies to headers, attributes, and parameters.

  • New @Param(multipart) and @Query(multipart) annotations for handling multi-part GET and POST parameters.

  • GET parameters are now CASE-SENSITIVE per W3C standards.

    • &Content must now be specified as &content.
    • &Method must now be specified as &method.
    • &debug must now be specified as &debug=true.
    • &plainText must now be specified as &plainText=true.
    • &notrace must now be specified as &noTrace=true.
  • Performance improvements around query parameters.

  • New methods on RestRequest for handling multi-part parameters:

    • RestRequest.getParameters(String,Class)
    • RestRequest.getQueryParameters(String,Class)
  • Fixed Jetty issue in RestResponse.setHeader(String,String) where setting the Content-Type through this method was inconsistent with the behavior in WAS/Tomcat.

  • &noTrace=true now prevents any errors from being logged in log file.

  • Workaround for Jetty issue where ServletContext.getContextPath() always ends with "null".

  • RestServletProperties.REST_allowMethodParam is now true by default on all subclasses of BasicRestServlet and RestServletJenaDefault.

Client

  • New method RestCall.allowRedirectsOnPosts(boolean).

  • New method RestCall.peekInputStream() allows you to read response bodies without interrupting execution flow.

  • New method RestCall.toString() now useful for debugging purposes. Shows all request/response headers and bodies.

  • RestCallException now includes HttpResponse object for easier debugging.

  • New method RestClient.addListener(RestClientListener) for registering request/response listeners.

  • New RestClient.setClassLoader(ClassLoader) method.

  • TLS support in JazzRestClient.

Other changes

  • samples.ear and samples.war projects have been replaced with an OSGi bundle with activated servlets in juno.samples.