blob: 827cb8f8a39973591bbd7f12dcd0a7a7539d2220 [file] [log] [blame]
<!--
/***************************************************************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
***************************************************************************************************************************/
-->
5.1.0.11 (Feb 14, 2015)
<p>
Juno 5.1.0.11 is a moderate update.
</p>
<h5 class='topic w800'>Core</h5>
<ul class='spaced-list'>
<li>Additions to {@link oaj.html.annotation.Html @Html} bean annotation.
<ul>
<li>New {@link oaj.html.annotation.Html#noTables() @Html(noTables)} annotation that prevents
arrays/Collections from being serialized as tables.
<li>New {@link oaj.html.annotation.Html#noTableHeaders() @Html(noTableHeaders)} annotation that prevents
HTML tables from having header rows.
</ul>
</li>
<li>Several improvements to URL-Encoding support.
<ul>
<li>Improved whitespace handling in {@link oaj.uon.UonParser}.
<li>New <dc>UonParserContext.UON_whitespaceAware</dc> property for controlling whether whitespace is ignored.
<li>New <dc>UrlEncodingContext.URLENC_expandedParams</dc> property for controlling whether arrays/Collections
should be serialized/parsed as multi-part parameters.
<li>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. <c>&amp;key=val1&amp;key=val2</c>).
</ul>
</li>
<li>New <dc>JsonSerializerContext.JSON_escapeSolidus</dc> property for controlling whether slash characters should be escaped.
<li>New {@link oaj.internal.TeeOutputStream} and {@link oaj.internal.TeeWriter} classes.
<li>New {@link oaj.ClassMeta#isInstance(Object)} method.
<li>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.
<li>New <dc>BeanPropertyMeta.add(BeanMap,Object)</dc> method for adding values to Collection and array properties.
<li>Config INI files now support keys with name <js>"*"</js>.
</ul>
<h5 class='topic w800'>Server</h5>
<ul class='spaced-list'>
<li>REST method parameters can now be generic types (e.g. <del><ja>@Param</ja>(<js>"foo"</js>) Map&lt;String,Integer&gt; foo</del>).
This applies to headers, attributes, and parameters.
<li>New <dc>@Param(multipart)</dc>
and <dc>@Query(multipart)</dc> annotations
for handling multi-part GET and POST parameters.
<li>GET parameters are now CASE-SENSITIVE per W3C standards.
<ul>
<li>
<li><c>&amp;Content</c> must now be specified as <c>&amp;content</c>.
<li><c>&amp;Method</c> must now be specified as <c>&amp;method</c>.
<li><c>&amp;debug</c> must now be specified as <c>&amp;debug=true</c>.
<li><c>&amp;plainText</c> must now be specified as <c>&amp;plainText=true</c>.
<li><c>&amp;notrace</c> must now be specified as <c>&amp;noTrace=true</c>.
</ul>
</li>
<li>Performance improvements around query parameters.
<li>New methods on {@link oajr.RestRequest} for handling multi-part parameters:
<ul>
<li><dc>RestRequest.getParameters(String,Class)</dc>
<li><dc>RestRequest#getQueryParameters(String,Class)</dc>
</ul>
</li>
<li>Fixed Jetty issue in {@link oajr.RestResponse#setHeader(String,String)} where setting
the <c>Content-Type</c> through this method was inconsistent with the behavior in WAS/Tomcat.
<li><c>&amp;noTrace=true</c> now prevents any errors from being logged in log file.
<li>Workaround for Jetty issue where <c>ServletContext.getContextPath()</c> always ends with <js>"null"</js>.
<li><c>RestServletProperties.REST_allowMethodParam</c> is now <jk>true</jk> by default on all subclasses
of {@link oajr.BasicRestServlet} and <dc>RestServletJenaDefault</dc>.
</ul>
<h5 class='topic w800'>Client</h5>
<ul class='spaced-list'>
<li>New method {@link oajrc.RestCall#allowRedirectsOnPosts(boolean)}.
<li>New method <c>RestCall.peekInputStream()</c> allows you to read response bodies without interrupting execution flow.
<li>New method {@link oajrc.RestCall#toString()} now useful for debugging purposes.
Shows all request/response headers and bodies.
<li>{@link oajrc.RestCallException} now includes <c>HttpResponse</c> object for easier debugging.
<li>New method <c>RestClient.addListener(RestClientListener)</c> for registering request/response listeners.
<li>New <dc>RestClient.setClassLoader(ClassLoader)</dc> method.
<li>TLS support in <c>JazzRestClient</c>.
</ul>
<h5 class='topic w800'>Other changes</h5>
<ul class='spaced-list'>
<li><c>samples.ear</c> and <c>samples.war</c> projects
have been replaced with an OSGi bundle with activated servlets in <c>juno.samples</c>.
</ul>