5.0.0.7 (Jan 20, 2013)
Juno 5.0.0.7 is a major update.
Core API updates
- Combined previous 3 libraries into a single library.
-
New {@link oaj.parser.ParserListener} class.
Adds ability to find and process unknown bean properties during parsing.
-
Enhancements to {@link oaj.xml.XmlParser}:
- Coalescing support
- Validations support
- Support for replacing entity references
- Resolver support
- Event allocator support
- Trim-whitespace support
-
Enhanced XML support:
-
New {@link oaj.xml.annotation.Xml#format() @Xml.format} annotation.
Controls how POJOs get serialized to XML.
Also allows you to collapse collections and arrays.
-
New @Xml.namespaces annotation.
Namespaces can be defined at package, class, method, or field levels.
-
New @Xml.nsUri annotation.
Shortcut for specifying namespace URIs.
-
New @Xml.valAttr annotation.
Serializes a bean property value as an attribute.
- Ability to override XS and XSI namespaces on XML and RDF/XML serializers.
- Ability to override RDF namespace on RDF/XML serializer.
- New more-efficient namespace resolution.
-
New configurable property classes for everything are now structured better and easier to locate and identify through the following new classes:
- {@link oaj.BeanContext}
- SerializerContext
- ParserContext
-
Enhancements to {@link oaj.BeanContext}:
-
Ability to mark bean properties as hidden using @BeanProperty(hidden) so that they don't get serialized.
-
Simplified ClassType {@link oaj.ClassMeta} API.
Combined 4 classes into a single class.
-
New @Bean.filter and @BeanProperty.filter annotations.
Used for defining filters on bean classes and bean properties instead of just globally through BeanContext.addTransforms(Class[]).
-
New {@link oaj.PropertyNamer} API / {@link oaj.annotation.Bean#propertyNamer() @Bean.propertyNamer} annotation.
Used for customizing bean property names.
-
New @BeanProperty.beanUri and @BeanProperty.id annotations.
Used for associating beans with URLs and IDs.
Used by XML serializer to add a url attribute on a bean element.
Used by RDF/XML serializer to construct rdf:resource attributes.
-
New BeanProperty.properties() annotation.
Used for limiting properties on child elements.
-
Automatic support for {@link java.net.URL} and {@link java.net.URI} objects.
- Converted to hrefs in HTML.
- Converted to url attributes in XML.
- Converted to resource:about attributes in RDF/XML.
-
Improvements to Javadocs.
-
Improved {@link oaj.utils.PojoQuery} support.
REST client updates
- GZIP compression support.
- Bug fixes.
REST server updates
-
Support for overriding bean context and serializer properties in a REST method call through new RestResponse.setProperty(String,Object) method.
For example, allows you to control whitespace options on a per-request basis.
-
Several new annotations on REST servlets:
- @RestResource(filters) - Associate post-formatting filters on a resource level.
- @RestResource.guards - Associate resource-level guards.
- @RestResource.messages - Associate a resource bundle with a REST servlet. Comes with several convenience methods for looking up messages for the client locale.
- @RestResource.properties - Override default bean context, serializer, and parser properties though an annotation.
-
Several new annotations on REST methods:
- @RestMethod(filters) - Associate post-formatting filters on a method level.
- {@link oajr.annotation.RestMethod#guards() @RestMethod(guards)} - Associate method-level guards.
-
New annotations on REST method parameters with automatic conversion:
- @Attr - A parameter or URL variable value as a parsed POJO.
- @Param - A query parameter value as a parsed POJO.
- @PathRemainder- The remainder after a URL pattern match as a String.
- @Header - An HTTP header value as a parsed POJO.
- @Content - The HTTP content as a parsed POJO.
- {@link oajr.annotation.Method @Method} - The HTTP method name as a String.
-
HTTP response content POJOs can now simply be returned from methods instead of calling {@link oajr.RestResponse#setOutput(Object)}.