Releases: PavlidisLab/Gemma
1.27.0
The RESTful API version has been bumped to 2.4.0.
Change set
- add
updatePublication
CLI - improved API for filtering value objects
- experimental API for integrating Hibernate Criteria in the VO filtering and ACL
- apply ACL rules to result sets by checking the associated EE
- use a test JAR for gemma-core to avoid packaging all the testing dependencies
- transition to UTF-8 for the database and Web frontend
- use MySQL 8.0.26
- fix batch information badge for uninformative FASTQ headers
- use jax-rs built-in mechanism of listeners for logging API-related exceptions
- improve the
Arg<T>
API - fix comparison with strings in the filtering and add tests to make sure that all the features work as expected
- retrieve the RESTful API version from
openapi-configuration.yaml
- fix retrieving datasets by NCBI taxon identifier
Highlights
UTF-8 transition
The database has been completely transitioned to UTF-8 using the utf8mb4
MySQL character set. We also fixed the HTML frontend to be using Unicode as well. This allows curators and users to use a broader set of characters in Gemma such as Emojis.
Paginated output for the RESTful API
Datasets that can be retrieved with offset/limit are now consistently paginated with a format inspired by Spring Data paging.
data: []
offset: 0
limit: 20
sort:
orderBy: id
direction: ASC
totalElements: 120
This works out by introducing two new interfaces: Slice<T>
and PaginatedResponseData<T>
. The slice can be used in DAO and service layer to provide additional information about the underlying result set such as its offset, limit, sorting and total elements.
It is used for filtering VOs with an improved interface:
public Slice<T> loadValueObjectsPreFilter(List<ObjectFilter[]> filters, Sort sort, int offset, int limit);
Improved Arg
Remove subclasses of FilterArg
, everything is handled in a generic manner now.
Introduce OffsetArg
and LimitArg
to produce better error messages when invalid values are used. It also provides the ability to cap the limit argument, so that users don't end-up querying an unreasonable amount of data all at once.
Defer responsibility of creating the ObjectFilter
to the DAO/service layers, more specifically the FilteringDao
interface.
Appassembler CLI
Maven Appassembler has been part of the build for a few weeks already to package gemma-core
as a CLI tool, and it is now stable enough to replace the current CLI.
This new tool drastically simplifies the build, and make it easier for curators to set up. There's no need for exporting any variable beyond $PATH
.
This release fixes the logging by removing a conflicting log4j.properties
file from baseCode and allowing one to override the logging settings under gemma-cli/etc/log4j.properties
Swagger UI is almost ready!
This release resolves an issue with an incorrect server path. There is only one issue remaining before we can use this in production #174.