| <!-- |
| /*************************************************************************************************************************** |
| * 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 <code><del>UonParserContext.UON_whitespaceAware</del></code> property for controlling whether whitespace is ignored. |
| <li>New <code><del>UrlEncodingContext.URLENC_expandedParams</del></code> 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. <code>&key=val1&key=val2</code>). |
| </ul> |
| </li> |
| <li>New <code><del>JsonSerializerContext.JSON_escapeSolidus</del></code> 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 <code><del>BeanPropertyMeta.add(BeanMap,Object)</del></code> 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<String,Integer> foo</del>). |
| This applies to headers, attributes, and parameters. |
| <li>New <code><del>@Param(multipart)</del></code> |
| and <code><del>@Query(multipart)</del></code> annotations |
| for handling multi-part GET and POST parameters. |
| <li>GET parameters are now CASE-SENSITIVE per W3C standards. |
| <ul> |
| <li> |
| <li><code>&Content</code> must now be specified as <code>&content</code>. |
| <li><code>&Method</code> must now be specified as <code>&method</code>. |
| <li><code>&debug</code> must now be specified as <code>&debug=true</code>. |
| <li><code>&plainText</code> must now be specified as <code>&plainText=true</code>. |
| <li><code>&notrace</code> must now be specified as <code>&noTrace=true</code>. |
| </ul> |
| </li> |
| <li>Performance improvements around query parameters. |
| <li>New methods on {@link oajr.RestRequest} for handling multi-part parameters: |
| <ul> |
| <li><code><del>RestRequest.getParameters(String,Class)</del></code> |
| <li><code><del>RestRequest#getQueryParameters(String,Class)</del></code> |
| </ul> |
| </li> |
| <li>Fixed Jetty issue in {@link oajr.RestResponse#setHeader(String,String)} where setting |
| the <code>Content-Type</code> through this method was inconsistent with the behavior in WAS/Tomcat. |
| <li><code>&noTrace=true</code> now prevents any errors from being logged in log file. |
| <li>Workaround for Jetty issue where <code>ServletContext.getContextPath()</code> always ends with <js>"null"</js>. |
| <li><code>RestServletProperties.REST_allowMethodParam</code> is now <jk>true</jk> by default on all subclasses |
| of {@link oajr.BasicRestServlet} and <code><del>RestServletJenaDefault</del></code>. |
| </ul> |
| |
| <h5 class='topic w800'>Client</h5> |
| <ul class='spaced-list'> |
| <li>New method {@link oajrc.RestCall#allowRedirectsOnPosts(boolean)}. |
| <li>New method <code>RestCall.peekInputStream()</code> 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 <code>HttpResponse</code> object for easier debugging. |
| <li>New method <code>RestClient.addListener(RestClientListener)</code> for registering request/response listeners. |
| <li>New <code><del>RestClient.setClassLoader(ClassLoader)</del></code> method. |
| <li>TLS support in <code>JazzRestClient</code>. |
| </ul> |
| |
| <h5 class='topic w800'>Other changes</h5> |
| <ul class='spaced-list'> |
| <li><code>samples.ear</code> and <code>samples.war</code> projects |
| have been replaced with an OSGi bundle with activated servlets in <code>juno.samples</code>. |
| </ul> |