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