blob: 2dce14eb9e7669ec531bec06ccd66aeb54c82f5f [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.17 (Aug 3, 2015)
<p>
Juno 5.1.0.17 is a major update.
</p>
<h5 class='topic w800'>Core</h5>
<ul class='spaced-list'>
<li>{@link oaj.BeanMap#get(Object)} and {@link oaj.BeanMap#put(String,Object)} now
automatically performs filtering if filters are defined on the bean property or bean property class.
<ul>
<li>Deleted the following methods which are now unnecessary:
<ul>
<li><code>BeanMap.getFiltered(String)</code>
<li><code>BeanMap.putFiltered(String,Object)</code>
<li><code>BeanMapEntry.getFiltered(String)</code>
<li><code>BeanMapEntry.putFiltered(String,Object)</code>
<li><code>BeanMapEntry.putFiltered(String,Object)</code>
<li><code>BeanPropertyMeta.getFiltered()</code>
<li><code>BeanPropertyMeta.setFiltered(Object)</code>
<li><code>BeanPropertyMeta.getTransformedClassMeta()</code>
</ul>
<li>{@link oaj.BeanPropertyMeta#getClassMeta()} now returns the filtered type of the property.
</ul>
<li><code><del>StringVarResolver</del></code> now has support for chained resolvers.
<li><code><del>StringVarResolver</del></code> now resolves variables inside resolved values.
i.e. if a resolved variable value itself contains a variable, it now resolves that variable too.
<li>Fixed bug where inner interface classes being used in <code>RestResource.filters()</code> were being
interpreted as surrogate classes because they have hidden 1-arg constructors due to being inner classes.
<li>Fixed bug in {@link oaj.internal.MultiSet} where exception was being thrown if last set was empty.
<li>New {@link oaj.utils.ZipFileList} class for providing efficiently zipped directories through the REST interface.
<li>New <code>RdfProperties.RDF_useXmlNamespaces</code> property.
<li>New <code><del>XmlParserContext.XML_preserveRootElement</del></code> property.
<li>Worked around bug in Sun VM on OS/X where XML parser was throwing an exception when trying to set a reporter.
</ul>
<h5 class='topic w800'>Server</h5>
<ul class='spaced-list'>
<li>New <code><del>ZipFileListResponseHandler</del></code> class.
<li>Simplified labels in servlet resource bundles:
<ul>
<li><code>"[ClassName].ResourceDescription"</code> is now <code>"[ClassName].label"</code>.
<li><code>"[ClassName].MethodDescription.[methodName]"</code> is now <code>"[ClassName].[methodName]"</code>.
</ul>
<li>Several changes to {@link oajr.RestRequest}:
<ul>
<li>Added new methods:
<ul>
<li><code><del>RestRequest.getQueryParameterMap()</del></code>
<li><code><del>RestRequest.getQueryParameterNames()</del></code>
<li><code><del>RestRequest.getPathInfoUndecoded()</del></code>
<li><code><del>RestRequest.getPathRemainderUndecoded()</del></code>
<li><code><del>RestRequest.getTrimmedRequestURI()</del></code>
<li><code><del>RestRequest.getTrimmedRequestURL()</del></code>
<li><code><del>RestRequest.getServletTitle()</del></code>
<li><code><del>RestRequest.getServletDescription()</del></code>
<li>{@link oajr.RestRequest#getMethodDescription()}
</ul>
<li>Behavior changes to {@link oajr.RestRequest#getPathInfo()} to follow Servlet specs.
Returns <jk>null</jk> instead of blank for no path info.
<li><code><del>RestRequest.getPathRemainder()</del></code> now automatically decodes the path remainder.
Use <code><del>RestRequest.getPathRemainderUndecoded()</del></code> to get the unencoded path remainder.
<li>Bug fixes in <code><del>RestRequest.getRequestParentURI()</del></code> when servlet is mapped to <js>"/*"</js>.
<li>Bug fixes in <code><del>RestRequest.getServletURI()</del></code> when servlet is mapped to <js>"/*"</js>.
</ul>
<li>New string replacement variables:
<ul>
<li><code>$R{contextPath}</code> - Returns value from {@link oajr.RestRequest#getContextPath()}
<li><code>$R{methodDescription}</code> - Returns value from {@link oajr.RestRequest#getMethodDescription()}
<li><code>$R{resourceTitle}</code> - Returns value from <code><del>RestRequest.getServletTitle()</del></code>
<li><code>$R{resourceDescription}</code> - Returns value from <code><del>RestRequest.getServletDescription()</del></code>
<li><code>$R{trimmedRequestURI}</code> - Returns value from <code><del>RestRequest.getTrimmedRequestURI()</del></code>
<li><code>$E{var}</code> - Environment variables.
</ul>
<li>Added methods <code><del>RestServlet.getDescription(RestRequest)</del></code> and <code><del>RestServlet.getLabel(RestRequest)</del></code>.
<li>{@link oajr.BasicRestServlet} and <code><del>RestServletJenaDefault</del></code> now provide default HTML titles
and descriptions:
<p class='bcode w800'>
<ja>@Property</ja>(name=<jsf>HTMLDOC_title</jsf>, value=<js>"$R{resourceTitle}"</js>),
<ja>@Property</ja>(name=<jsf>HTMLDOC_description</jsf>, value=<js>"$R{resourceDescription}"</js>)
</p>
<li>Options pages on {@link oajr.BasicRestServlet} and <code><del>RestServletJenaDefault</del></code> now provide default descriptions and back links:
and descriptions:
<p class='bcode w800'>
<ja>@Property</ja>(name=<jsf>HTMLDOC_navlinks</jsf>, value=<js>"{back:'$R{servletURI}"</js>),
<ja>@Property</ja>(name=<jsf>HTMLDOC_description</jsf>, value=<js>"Resource options"</js>)
</p>
<li>New {@link oajr.BasicRestServletGroup} class.
<li>Removed <code>RestServletProperties.REST_trimTrailingUriSlashes</code> and <code>RestServletProperties.REST_pathInfoBlankForNull</code>.
<li>New annotations for providing labels and descriptions. Useful if you don't plan on having to support other languages, so you don't
want to provide labels in resource bundles.
<ul>
<li><code><del>RestResource.label()</del></code>
<li>{@link oajr.annotation.RestResource#description() @RestResource(description)}
<li>{@link oajr.annotation.RestMethod#description() @RestMethod(description)}
<li><code><del>RestMethod#responses()</del></code>
<li><code><del>Attr.description()</del></code>
<li><code><del>Content.description()</del></code>
<li><code><del>HasParam.description()</del></code>
<li><code><del>HasQParam.description()</del></code>
<li><code><del>Header.description()</del></code>
<li><code><del>Param.description()</del></code>
<li><code><del>QParam.description()</del></code>
</ul>
<li>Support for sorting resources by name in <code><del>ChildResourceDescriptions</del></code>.
</ul>
<h5 class='topic w800'>Samples</h5>
<ul class='spaced-list'>
<li>Added <code>/tempDir/upload</code> showing how to use <code>ServletFileUpload</code> with multipart form posts.
</ul>