| <!-- |
| /*************************************************************************************************************************** |
| * 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> |