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