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_whitespaceAwareproperty for controlling whether whitespace is ignored. - New
UrlEncodingContext.URLENC_expandedParamsproperty 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_escapeSolidusproperty for controlling whether slash characters should be escaped. -
New
TeeOutputStreamandTeeWriterclasses. -
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
.¬race
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 nowtrue
by default on all subclasses ofBasicRestServletandRestServletJenaDefault.
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. -
RestCallExceptionnow includesHttpResponse
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
andsamples.war
projects have been replaced with an OSGi bundle with activated servlets injuno.samples
.