5.1.0.11 (Feb 14, 2015)
Juno 5.1.0.11 is a moderate update.
Core
- Additions to {@link oaj.html.annotation.Html @Html} bean annotation.
- New {@link oaj.html.annotation.Html#noTables() @Html(noTables)} annotation that prevents
arrays/Collections from being serialized as tables.
- New {@link oaj.html.annotation.Html#noTableHeaders() @Html(noTableHeaders)} annotation that prevents
HTML tables from having header rows.
- Several improvements to URL-Encoding support.
- Improved whitespace handling in {@link oaj.uon.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 {@link oaj.urlencoding.annotation.UrlEncoding#expandedParams() @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 {@link oaj.internal.TeeOutputStream} and {@link oaj.internal.TeeWriter} classes.
- New {@link oaj.ClassMeta#isInstance(Object)} method.
- Performance improvements when using the {@link oaj.BeanMap#add(String,Object)} method.
Array properties are stored in a temporary list cache until {@link oaj.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
.
¬race
must now be specified as &noTrace=true
.
- Performance improvements around query parameters.
- New methods on {@link oajr.RestRequest} for handling multi-part parameters:
RestRequest.getParameters(String,Class)
RestRequest#getQueryParameters(String,Class)
- Fixed Jetty issue in {@link oajr.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 {@link oajr.BasicRestServlet} and RestServletJenaDefault
.
Client
- New method {@link oajrc.RestCall#allowRedirectsOnPosts(boolean)}.
- New method
RestCall.peekInputStream()
allows you to read response bodies without interrupting execution flow.
- New method {@link oajrc.RestCall#toString()} now useful for debugging purposes.
Shows all request/response headers and bodies.
- {@link oajrc.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
.