blob: f44d9b005080f8c13d3c12a4ffa6eba3171a6571 [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.0.0.34 (Nov 10, 2013)
<p>
Juno 5.0.0.34 is a moderate update.
</p>
<ul class='spaced-list'>
<li>
New support for runtime-replaced variables in REST resource properties:
<p class='bcode w800'>
<ja>@RestResource</ja>(
messages=<js>"nls/Messages"</js>,
properties={
<ja>@Property</ja>(name=<js>"label"</js>,value=<js>"$L{servletTitle}"</js>), <jc>// Localized variable in Messages.properties</jc>
<ja>@Property</ja>(name=<js>"javaVendor"</js>,value=<js>"$S{java.vendor}"</js>), <jc>// System property</jc>
<ja>@Property</ja>(name=<js>"foo"</js>,value=<js>"bar"</js>),
<ja>@Property</ja>(name=<js>"bar"</js>,value=<js>"baz"</js>),
<ja>@Property</ja>(name=<js>"v1"</js>,value=<js>"$R{foo}"</js>), <jc>// Request variable. value="bar"</jc>
<ja>@Property</ja>(name=<js>"v2"</js>,value=<js>"$R{$R{foo}}"</js>) <jc>// Nested request variable. value="baz"</jc>
}
)
</p>
See <c>RestServlet.createRequestVarResolver(RestRequest)</c> for more information.
</li>
<li>
Eliminated <ja>@Property.type</ja> annotation which was the old way of specifying NLS variables that got resolved at runtime.
</li>
<li>
New methods on {@link oajr.RestRequest}:
<ul>
<li><dc>RestRequest.getVarResolver()</dc></li>
<li><dc>RestRequest.getServletURI()</dc></li>
<li><dc>RestRequest.getRequestParentURI()</dc></li>
</ul>
</li>
<li>
New methods on {@link oajr.RestResponse}:
<ul>
<li><c>RestResponse.sendRedirect(CharSequence)</c>
</ul>
</li>
<li>
New methods on {@link oajr.RestServlet} that allow easier customization by subclasses:
<ul>
<li><dc>RestServlet.createConfigFactory()</dc></li>
<li><dc>RestServlet.createConverters()</dc></li>
<li><dc>RestServlet.createDefaultRequestHeaders()</dc></li>
<li><dc>RestServlet.createDefaultResponseHeaders()</dc></li>
<li><dc>RestServlet.createEncoders()</dc></li>
<li><dc>RestServlet.createFilters()</dc></li>
<li><dc>RestServlet.createGuards()</dc></li>
<li><dc>RestServlet.createMimetypesFileTypeMap()</dc></li>
<li><dc>RestServlet.createParsers()</dc></li>
<li><dc>RestServlet.createProperties()</dc></li>
<li><dc>RestServlet.createRequestProperties(ObjectMap,RestRequest)</dc></li>
<li><dc>RestServlet.createRequestVarResolver(RestRequest)</dc></li>
<li><dc>RestServlet.createSerializers()</dc></li>
<li><dc>RestServlet.createUrlEncodingParser()</dc></li>
</ul>
</li>
<li>
Changed <c>RestServletNls</c> to use <c>ResourceDescription/MethodDescription</c>
instead of <c>RestResource/RestMethod</c>
</li>
<li>
New property <c>RestServletProperties.REST_htDocsFolder</c>.<br>
New support for serving up static documents from classpath through REST interface.
</li>
<li>
Exception APIs now use {@link java.text.MessageFormat} (e.g. <js>"{0}"</js>) for message variables instead of <js>"%s"</js>.
</li>
<li>
New {@link oaj.annotation.Bean#stopClass @Bean.stopClass} annotation for specifying stop classes for bean properties.
</li>
<li>
New <dc>BeanFilter.setStopClass(Class)</dc> which is the program equivalent to the annotation above.
</li>
<li>
New methods on {@link oaj.dto.ResultSetList}:
<ul>
<li><c>ResultSetList.handleBlob(Blob)</c></li>
<li><c>ResultSetList.handleClob(Clob)</c></li>
</ul>
</ul>