| <!-- |
| /*************************************************************************************************************************** |
| * 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. |
| ***************************************************************************************************************************/ |
| --> |
| |
| 9.0.0 (TBD) |
| |
| <div class='topic'> |
| <p> |
| Juneau 9.0.0 is a major release. Deprecated APIs that have been accumulating over time have been removed. |
| |
| </p> |
| <p> |
| Major changes include: |
| </p> |
| <ul class='spaced-list'> |
| <li> |
| The code has undergone significant refactoring to ease maintainability and improve overall performance. |
| Configuration properties have been removed entirely. They have been replaced with a standard builder-based |
| architecture. In addition to making the code more maintainable, it also improves performance when |
| creating new serializers/parsers/rest clients (and others). |
| <li> |
| REST servlets now seemlessly integrate with Spring Boot. |
| </ul> |
| |
| <h5 class='topic w800'>juneau-marshall</h5> |
| <ul class='spaced-list'> |
| <li> |
| Eliminated the various <c><ja>@XConfig</ja>(applyX={...})</c> annotations and replaced them with the ability |
| to apply targeted annotations directly to configuration classes and methods (such as REST classes/methods). |
| <p class='bcode'> |
| | <ja>@Rest</ja>(...) |
| | <ja>@Bean</ja>(on=<js>"MyBean1,MyBean2"</js>,sort=<jk>true</jk>) |
| | <ja>@UrlEncoding</ja>(onClass=MyList.<jk>class</jk>,expandedParams=<jk>true</jk>) |
| | <jk>public class</jk> MyRestClass { |
| | |
| | <ja>@RestOp</ja>(...) |
| | <ja>@Bean</ja>(on=<js>"MyBean1,MyBean2"</js>,sort=<jk>false</jk>) |
| | <ja>@UrlEncoding</ja>(onClass=MyList.<jk>class</jk>,expandedParams=<jk>false</jk>) |
| | <jk>public</jk> Object myRestMethod() { ... } |
| | } |
| </p> |
| <li> |
| {@link oaj.marshaller.Json5 JSON 5} support. |
| <li> |
| New {@link oaj.annotation.Marshalled @Marshalled} annotation for non-bean classes. |
| <li> |
| New {@link oaj.annotation.BeanConfig#ignoreUnknownEnumValues() @BeanConfig(ignoreUnknownEnumValues)} annotation and support for ignoring |
| unknown enum values during parsing. |
| <li> |
| Java Serialized Object marshalling support has been removed entirely due to security risks with usage (better safe than sorry). |
| </ul> |
| |
| <h5 class='topic w800'>juneau-rest-common</h5> |
| <p> |
| New module containing the common REST classes/annotations uses by both the client and server APIs. |
| These were previously contained within <c>juneau-marshall</c>. |
| </p> |
| <ul class='spaced-list'> |
| <li> |
| Significant refactoring of the classes in the {@link oaj.http} package and subpackages. Attempts were made to make classes as natural |
| extensions to the Apache HttpComponents APIs. Significant new functionality here. |
| <li> |
| <c>@RemoteMethod</c> annotation has been replaced with the following: |
| <ul class='javatreec'> |
| <li class='ja'>{@link oaj.http.remote.RemoteOp} |
| <li class='ja'>{@link oaj.http.remote.RemoteGet} |
| <li class='ja'>{@link oaj.http.remote.RemotePut} |
| <li class='ja'>{@link oaj.http.remote.RemotePatch} |
| <li class='ja'>{@link oaj.http.remote.RemotePost} |
| <li class='ja'>{@link oaj.http.remote.RemoteDelete} |
| </ul> |
| </li> |
| </ul> |
| |
| <h5 class='topic w800'>juneau-rest-server</h5> |
| <ul class='spaced-list'> |
| <li> |
| Significant refactoring done to allow for many extensible aspects of the API to be performed through injected beans |
| in Spring. These include logging, debugging, REST method arg types, static files, file finders, swagger creators, thrown stores, response |
| processors, serializers/parsers, JSON schema generators, statistics gathering stores, and default request attributes/headers and response |
| headers. |
| <li> |
| <c>@RestMethod</c> annotation has been replaced with the following: |
| <ul class='javatreec'> |
| <li class='ja'>{@link oaj.rest.annotation.RestOp} |
| <li class='ja'>{@link oaj.rest.annotation.RestGet} |
| <li class='ja'>{@link oaj.rest.annotation.RestPut} |
| <li class='ja'>{@link oaj.rest.annotation.RestPatch} |
| <li class='ja'>{@link oaj.rest.annotation.RestPost} |
| <li class='ja'>{@link oaj.rest.annotation.RestDelete} |
| </ul> |
| </li> |
| <li> |
| Defining REST resources with predefined marshalling support is now much simpler. You can now extend from a basic REST servlet/object. |
| <p class='bcode'> |
| | <jc>// A root resource that supports JSON/HTML marshalling.</jc> |
| | <jk>public class</jk> MyRootResources <jk>extends</jk> BasicRestServletGroup { ... } |
| | |
| | <jc>// A child resource that supports all available marshalling.</jc> |
| | <jk>public class</jk> MyChildResource <jk>extends</jk> BasicRestObject { ... } |
| </p> |
| <ul class='javatreec'> |
| <li class='jc'>{@link oajr.servlet.BasicRestServlet} |
| <li class='jc'>{@link oajr.servlet.BasicRestServletGroup} |
| <li class='jc'>{@link oajr.servlet.BasicRestObject} |
| <li class='jc'>{@link oajr.servlet.BasicRestObjectGroup} |
| </ul> |
| </li> |
| </ul> |
| |
| <h5 class='topic w800'>juneau-dto</h5> |
| <ul class='spaced-list'> |
| <li> |
| Addition of OpenAPI 3.0 ({@link oaj.dto.openapi3} package). |
| </ul> |
| |
| <h5 class='topic w800'>juneau-rest-server-springboot</h5> |
| <ul class='spaced-list'> |
| <li> |
| The requirement for using <c>JuneauRestInitializer</c> during App initialization to use bean injection has been eliminated. |
| Instead, root resources should simply extend from {@link oajr.springboot.BasicSpringRestServlet} and {@link oajr.springboot.BasicSpringRestServletGroup}. |
| These will automatically hook into the Spring Boot framework for resolution of REST children and various extension beans added |
| to the REST API framework. |
| </ul> |
| |
| <h5 class='topic w800'>juneau-rest-client</h5> |
| <ul class='spaced-list'> |
| <li> |
| While the general usage pattern stays the same, the REST client code has undergone significant rewriting. It is now more inline |
| as an extension of the Apache HttpClient library. Much new functionality such as support for fluent assertions has been added. |
| <p class='bjava'> |
| | <jc>// Create a basic REST client with JSON support and download a bean.</jc> |
| | MyBean <jv>bean</jv> = RestClient.<jsm>create</jsm>() |
| | .json5() |
| | .build() |
| | .get(<jsf>URI</jsf>) |
| | .run() |
| | .assertStatus().asCode().is(200) |
| | .assertHeader(<js>"Content-Type"</js>).matchesSimple(<js>"application/json*"</js>) |
| | .getContent().as(MyBean.<jk>class</jk>); |
| </p> |
| </ul> |
| |
| <h5 class='topic w800'>juneau-rest-mock</h5> |
| <ul class='spaced-list'> |
| <li> |
| Entirely rewritten. Changes too many to list. |
| </ul> |
| </div> |